Java List 排序sort 和sorted方法说明
Java List 排序Sort 和Sorted
1、sort: list.sort 方法是list方法 对原有list 元素顺序位置进行更改排序
如:
listP.sort((x1,x2)->x1.getName().compareTo(x2.name));
2、sorted: sorted 方法是对list转换成stream流的方法,不对有有list元素排序,而是返回一个排序后的新list:
如:
List<Fruit> listP2 = listP.stream().sorted(Comparator.comparing(Fruit::getName).reversed().thenComparing(Fruit::getWeight)).collect(Collectors.toList());
如果想第二个排序字段倒序排可以如下写法
List<Fruit> listP2 = listP.stream().sorted(Comparator.comparing(Fruit::getName).reversed()
.thenComparing(Comparator.comparing(Fruit::getWeight).reversed())).collect(Collectors.toList());
下面用多种方式实例进行说明
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 51 52 53 54 55 56 57 58 59 60 61 | try { Fruit p1 = new Fruit(); p1.setName( "apple" ); p1.setWeight( 8 ); Fruit p2 = new Fruit(); p2.setName( "apple" ); p2.setWeight( 13 ); Fruit p3 = new Fruit(); p3.setName( "pear" ); p3.setWeight( 10 ); Fruit p4 = new Fruit(); p4.setName( "pear" ); p4.setWeight( 16 ); Fruit p5 = new Fruit(); p5.setName( "wang" ); p5.setWeight( 10 ); Fruit p6 = new Fruit(); p6.setName( "banana" ); p6.setWeight( 2 ); List<Fruit> listP = Arrays.asList(p1, p2, p3, p4, p5, p6); // list.sort 对原有list 元素顺序位置进行更改排序 // lamda表达式实现 Comparator 简要主法 listP.sort((x1,x2)->x1.getName().compareTo(x2.name)); // lamda 表达式实现自定义方法 listP.sort((x1,x2)-> { if (x1.getWeight()>x2.getWeight()){ return 1 ; } else if (x1.getWeight()<x2.getWeight()){ return - 1 ; } else { return 0 ; } }); //lamda 表达式 显示实现 comparator方法 listP.sort( new Comparator<Fruit>() { @Override public int compare(Fruit o1, Fruit o2) { return o1.getName().compareTo(o2.getName()); } }); // list sort 实现多字段排序 Comparator<Fruit> nameComparator=Comparator.comparing(x-> x.getName()); Comparator<Fruit> weightComparator=Comparator.comparing(x-> x.getWeight()); listP.sort(nameComparator.thenComparing(weightComparator)); // list-stream()->sorted 进行排序反回排序后新list,原list元素顺序不变 List<Fruit> listP2 = listP.stream().sorted(Comparator.comparing(Fruit::getName).reversed().thenComparing(Fruit::getWeight)).collect(Collectors.toList()); } catch (Exception e) { e.printStackTrace(); } } |
3、List<String> list 排序 下面代码实例
String[] strC = new String[]{"账单优惠", "现金", "账单减免", "扫码支付", "团购", "会员卡", "银行卡"}; List<String> listCategory = new ArrayList<>(); listCategory = Arrays.asList(strC); List<String> list2 = listCategory.stream().sorted(String::compareTo).collect(Collectors.toList()); List<String> list3 = listCategory.stream().sorted((x1, x2) -> { return x1.compareTo(x2); }).collect(Collectors.toList()); Collections.sort(listCategory); Collections.reverse(listCategory);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?