我在 Java 資料操作方面很陌生,所以如果有人有一些好的提示,我需要一些幫助。實際上,我只想找到一種簡單的方法來對 2D 串列進行排序。
我創建一個這樣的串列:
List<int[]> A = new ArrayList<int[]>();
A.add(new int[] {0,1});
A.add(new int[] {5,40});
A.add(new int[] {7,5});
然后我想要一個按第二個元素排序的結果,例如:
0 -> 1
7 -> 5
5 -> 40.
我嘗試了類似的東西,Arrays.sort(A.toArray(), (int[]a, int[]b) -> a[0] - b[0]);但它不起作用。
有沒有一個簡單的解決方案來做那個排序串列?
uj5u.com熱心網友回復:
嘗試這個:
List<Integer[]> A = new ArrayList<>();
A.add(new Integer[] {0,1});
A.add(new Integer[] {5,40});
A.add(new Integer[] {7,5});
A.sort(Comparator.comparingInt(a -> a[1]));
for (Integer[] a : A) {
System.out.println(Arrays.toString(a));
}
uj5u.com熱心網友回復:
你可以簡單地做:
list.sort(Comparator.comparingInt(arr -> arr[1]));
或者你也可以這樣做:
Collections.sort(list, Comparator.comparingInt(arr -> arr[1]));
如果你想分類成一個新的List<int[]>,你可以使用stream:
List<int[]> listSorted = list.stream()
.sorted(Comparator.comparingInt(arr -> arr[1]))
.toList();
uj5u.com熱心網友回復:
for (int i = 0; i < A.size(); i ) {
int[] temp = A.get(i);
for (int j = i 1; j < A.size(); j ) {
int[] temp2 = A.get(j);
if (temp[1] > temp2[1]) {
A.set(i, temp2);
A.set(j, temp);
}
}
}
uj5u.com熱心網友回復:
涼爽的。多謝你們。比較器和流運行良好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/441053.html
上一篇:從物件陣列的內部陣列中洗掉重復項
