java集合排序规则的一些改写方法
1、适用与List的sort排序改写
public static void main(String[] args){
ArrayList<Integer> list=new ArrayList<>();
list.add(2);
list.add(3);
list.add(1);
list.add(5);
Collections.sort(list,calAll()); //定义新的改写规则calAll();
for(Integer i : list)
System.out.print(i+" ");
}
private static Comparator calAll() {
return new Comparator<Integer>() { //返回倒序规则
public int compare(Integer o1, Integer o2) {
if(o1>o2)
return -1;
else if(o1<o2)
return 1;
else
return 0;
}
};
}
2、适用于set容器的TreeSet排序规则改写
Set<String> sortset = new TreeSet<>(new Comparator<String>() {
public int compare(String o1, String o2) {
Integer a = rank(o1); //rank为自定义的某个规则
Integer b = rank(o2);
if(a!=b)
return a.compareTo(b);
else if(o1.length()!=o2.length()) //长度短的排长的后面
return ((Integer)o1.length()).compareTo(((Integer)o2.length()));
else
return o1.compareTo(o2); //按ASCII码排序
}
});
compareTo函数:a大于指定函数b返回1,小于则返回-1,等于返回0;且基元数据类型不能调用(比如int无法调用,Integer即可)。