1.先实现Comparator的接口 重写compare方法 根据比较大小来返回数值:
比如:(Integer o1 - Integer o2);
return 1 表示o1>o2;
return -1 表示o1<o2;
return 0 表示 o1 = o2;
因此可以根据这个返回值来设定TreeSet里面的元素升序或者降序排列 ,下面演示的是实现接口并重写的方式来定制排序:
@Override
public int compare(Object o1, Object o2) { if(o1 instanceof People & o2 instanceof People){
People p1 = (People) o1;
People p2 = (People) o2;
if(p1.getAge()>p2.getAge()){
return -1;
}else if(p1.getAge()<p2.getAge()){
return 1;
}
} return 0;
} };
List<Integer> li = new ArrayList<Integer>(); li.add(7);
li.add(0);
li.add(3); li.sort(new Comparator<Integer>() { @Override
public int compare(Integer o1, Integer o2) { Integer i1 = o1;
Integer i2 = o2;
if(i1>i2) {
return 1; }else if(i1<i2) {
return -1;
} return 0;
} });
下面是用lambda表达式的方式来定制排序:
li.sort((o1,o2)->(o2 - o1 ) ); System.out.println(li);