我有一個數組列表,就像
List<List<Integer>> res = new ArrayList();
經過一些處理後,我的 res 數組列表將包含
[1, 1, 2]
[1, 1]
[1, 2]
[1]
[2]
這些元素,但我想要排序順序,看起來像
[ 1]
[1 1]
[1 1 2]
[1 2]
[2]
所以我所做的是
Collections.sort(res,new Comparator<List<Integer>>(){
public int compare(List<Integer> o,List<Integer> s){
int c=0;
//c=o.size().compareTo(s.size());
//if(c==0){
for(int i=0;i<Math.min(s.size(),o.size());i++){
c=o.get(i).compareTo(s.get(i));
if(c!=0) return c;
}
//}
return c;
}
});
但它不起作用
嘗試比較列表的大小,而不是c
在 結束時返回compare
:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Main {
public static void main(String[] args) {
List<List<Integer>> list = new ArrayList<>();
list.add(new ArrayList<>(Arrays.asList(1, 1, 2)));
list.add(new ArrayList<>(Arrays.asList(1, 1)));
list.add(new ArrayList<>(Arrays.asList(1, 2)));
list.add(new ArrayList<>(Arrays.asList(1)));
list.add(new ArrayList<>(Arrays.asList(2)));
System.out.printf("Before: %s%n", list);
Collections.sort(list, new Comparator<List<Integer>>() {
public int compare(List<Integer> o, List<Integer> s) {
for (int i = 0; i < Math.min(o.size(), s.size()); i++) {
int c = o.get(i).compareTo(s.get(i));
if (c != 0) {
return c;
}
}
return Integer.compare(o.size(), s.size());
}
});
System.out.printf("After: %s%n", list);
}
}
輸出:
Before: [[1, 1, 2], [1, 1], [1, 2], [1], [2]]
After: [[1], [1, 1], [1, 1, 2], [1, 2], [2]]
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen