我目前有一個ArrayList
的int[]
。 int[]
有5個元素。我希望能夠根據我的int[]
的第二和第四個索引來排序此ArrayList
。我如何在Java中做到這一點?在多個索引上對Int []的ArrayList排序
回答
package com.sandbox;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Sandbox {
public static void main(String[] args) {
List<int[]> list = new ArrayList<int[]>();
list.add(new int[]{1, 4, 6, 8, 9});
list.add(new int[]{1,3,6,7,8});
list.add(new int[]{1,4,6,7,9});
Collections.sort(list, new Comparator<int[]>() {
public int compare(int[] o1, int[] o2) {
int compare = Integer.compare(o1[1], o2[1]);
//if they're equal on this element then compare the next element
return compare == 0 ? Integer.compare(o1[3], o2[3]) : compare;
}
});
for (int[] ints : list) {
System.out.println(Arrays.toString(ints));
}
}
}
這是輸出:
[1,3,6,7,8] [1,4,6,7,9] [1,4,6,8 9]
嗯輝煌非常感謝!!!如何擴展這個,如果我想排序一些參數指標,即不是必需的2和4?我會聲明一個構造函數嗎? – user1950055 2013-03-21 01:22:24
這實際上取決於你將如何傳遞這些信息。但是如果我猜測,我會將'Comparator'提取到它自己的類中,併爲它提供一個構造函數,在其中傳遞想要的索引排序方式。 – 2013-03-21 01:28:17
我似乎無法調用Integer.compare()? – user1950055 2013-03-21 10:25:06
都需要這樣的
class IntArrayComparator implements Comparator<int[]> {
private final int[] ai;
IntArrayComparator(int[] ai) {
this.ai = ai;
}
@Override
public int compare(int[] a1, int[] a2) {
for (int i : ai) {
int c = Integer.compare(a1[i], a2[i]);
if (c != 0) {
return c;
}
}
return 0;
}
}
注的自定義比較是Integer.compare(INT,INT)我s在Java 7中添加,在早期版本中使用
int c = (a1[i] < a2[i]) ? -1 : a1[i] == a2[i] ? 0 : 1;
啊啊謝謝你只是實現這個,但是非常昂貴的調用Integer.compare ...任何想法爲什麼? – user1950055 2013-03-21 10:25:38
它自1.7以來 – 2013-03-21 10:32:30
- 1. 排序3個int字段上的對象的ArrayList
- 2. 在單個陣列上按ArrayList索引(行)對三個陣列排序
- 3. 使用多個索引排序字符串[]的ArrayList
- 4. 排序多個索引
- 5. Java - 每個索引有多個int的ArrayList
- 6. JAVA:在多列上對ArrayList <ArrayList <Integer>>排序
- 7. 由多個屬性對ArrayList排序
- 8. 在索引列上排序
- 9. 排序2d arraylist和得到索引java
- 10. 如何排序多個arraylist
- 11. 排序多個ArrayList建議?
- 12. 排序列上的索引
- 13. 如何使用多個排序條件對ArrayList進行排序?
- 14. Java如何ArrayList <String>排序/按索引排序?
- 15. indexeddb按多個索引排序
- 16. 在Java中對ArrayList排序
- 17. Java:屬性上的對象排序Arraylist
- 18. ArrayList ArrayList的索引
- 19. Bean的Arraylist的排序Arraylist
- 20. 如何將索引頁上的記錄按多個值排序?
- 21. 排序的ArrayList
- 22. 對Rails索引中的對象排序
- 23. 排序和搜索一個ArrayList
- 24. ArrayList的排序
- 25. 對類ArrayList的排序
- 26. 排序ArrayList的對象
- 27. 根據最終排序索引對多個鍵進行JavaScript複雜排序
- 28. 排序的ArrayList
- 29. 對對象的ArrayList進行排序(ArrayList在排序後沒有被更改)
- 30. 通過int值對HashMap <String,Object>的ArrayList進行排序
你能解釋一下你到底想要做什麼嗎? 「基於第二和第四指標」是什麼意思? – Jeffrey 2013-03-21 01:00:23
因此,例如,如果我有以下數組列表[1,4,6,8,9] [1,3,6,7,8] [1,4,6,7,9]順序將[1 ,3,6,7,8] [1,4,6,7,9] [1,4,6,8,9]即我會先排序第二個索引,如果是相同的,然後排序第四個索引... – user1950055 2013-03-21 01:04:38