问题描述
- 有个 关于 Collections.sort 排序的问题 请教大神门哈
-
for (RefractionCollection collection : refractionCollections) {List<RefractionCollection> list2 = new ArrayList<RefractionCollection>(); list2.add(collection); Collections.sort(list2);
}
假设现在 这个list 2 里面有四个数据, dog, cat ,bird, fish.
我现在想自定义一个排列数据,不是按照字母的升序或者降序。 请问怎么做到呀?比如说 fish, cat dot bird
解决方案
使用public static void sort(List list, Comparator<? super T> c)
Collections.sort(list2, new Comparator(){
public int compare(Object o1, Object o2) {
return -o1.compareTo(o2);
}
});
解决方案二:
如果数据类型是自定义的也可以是想IComparable接口。
解决方案三:
自己实现一个Comparator,传入两个对象,你返回一个数字,>0表示第一个大,<0表示第二个大,=0表示相等
注意,比较规则必须是偏序的。
比如a > b,b > c,那么不能c > a。如果你的比较规则不是偏序的(比如说你随机产生一个-1~1的数字作为比较器的返回),排序算法可能会出现诡异的错误。
时间: 2024-09-18 21:22:51