Collections集合的一些日常记录(时常更新)
1、比较数组(获取大到小):Arrays.sort(Integer[] a, Collections.reverseOrder())
Lamabda表达式:Arrays.sort(nums, (Integer l1,Integer l2)->{return l2-l1;});
2、比较集合:Collections.sort()
对于没有对应比较构造器的,需要重写比较方法:
普通写法:
Collections.sort(keyList, new Comparator() {
@Override public int compare(String paramT1, String paramT2) { return paramT2.compareTo(paramT1); } });
精简型Lamabda表达式:
【比较实体类某个字段--代替lambda】Comparator.comparing(Person::getName)
【相同值情况顺延比较】objs.sort(Comparator.comparing((Obj o) -> o.first).thenComparing(o -> o.second).thenComparingInt(o -> o.third));
//返回 对象集合以类属性一升序排序
list.stream().sorted(Comparator.comparing(类::属性一));
//返回 对象集合以类属性一降序排序 注意两种写法
list.stream().sorted(Comparator.comparing(类::属性一).reversed());
//先以属性一升序,结果进行属性一降序
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()));
//以属性一降序
//返回 对象集合以类属性一升序 属性二升序
list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二));
//返回 对象集合以类属性一降序 属性二升序 注意两种写法
list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二));
//先以属性一升序,升序结果进行属性一降序,再进行属性二升序
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二));
//先以属性一降序,再进行属性二升序
//返回 对象集合以类属性一降序 属性二降序 注意两种写法
list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二,Comparator.reverseOrder()));
//先以属性一升序,升序结果进行属性一降序,再进行属性二降序
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二,Comparator.reverseOrder()));
//先以属性一降序,再进行属性二降序
//返回 对象集合以类属性一升序 属性二降序 注意两种写法
list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二).reversed());
//先以属性一升序,升序结果进行属性一降序,再进行属性二升序,结果进行属性一降序属性二降序
list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二,Comparator.reverseOrder()));
//先以属性一升序,再进行属性二降序
ps:以上关于list的转载自:https://www.cnblogs.com/kuanglongblogs/p/11230250.html
-----------------------------------------------------------------------------------------------
数组转换为LIST: List