List的定制排序 包括使用lambda表达式来实现的方法
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);