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 list = new ArrayList<>(Arrays.asList(arr));