1. 多字段排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| List<类> list; 代表某集合
list.stream().sorted(Comparator.comparing(类::属性1));
list.stream().sorted( Comparator.comparing(类::属性1).reversed() );
list.stream().sorted( Comparator.comparing(类::属性1,Comparator.reverseOrder()) );
list.stream().sorted( Comparator.comparing(类::属性1).thenComparing(类::属性2) );
list.stream().sorted( Comparator.comparing(类::属性1).reversed().thenComparing(类::属性2) );
list.stream().sorted( Comparator.comparing(类::属性1, Comparator.reverseOrder()).thenComparing(类::属性2) );
list.stream().sorted( Comparator.comparing(类::属性1).reversed().thenComparing(类::属性2, Comparator.reverseOrder()) );
list.stream().sorted( Comparator.comparing(类::属性1, Comparator.reverseOrder()) .thenComparing(类::属性2, Comparator.reverseOrder()) );
list.stream().sorted( Comparator.comparing(类::属性1).reversed().thenComparing(类::属性2).reversed() );
list.stream().sorted( Comparator.comparing(类::属性1).thenComparing(类::属性2, Comparator.reverseOrder()) );
|
Comparator.comparing(类::属性一).reversed(); //得到正序结果后再逆序
Comparator.comparing(类::属性一,Comparator.reverseOrder()); //直接逆序
两种排序是完全不一样的,一定要区分开来 1 是得到排序结果后再排序,2是直接进行排序,很多人会混淆导致理解出错,2更好理解,建议使用 2 。