java8-stream流的sorted 排序

介绍

排序一般按照某个字段进行进行升序或者降序排,我们自己实现排序一般会用冒泡,快排序,二分法等
如果用sorted排序,以前上百行的代码现在只需要几行代码搞定,增强的代码的简洁性

升序

List<Integer> list = Arrays.asList(10,6,  39 14);

List<Integer> filter1 = list.stream()
				.sorted(Comparator.comparing(Integer::intValue))
				.collect(Collectors.toList());

降序reversed()

List<Integer> filter2 = list.stream()
			.sorted(Comparator.comparing(Integer::intValue).reversed())
			.collect(Collectors.toList());

三、多字段排序

关键字thenComparing

1.先以 某维度升序
2.当某维度相同时,在以另一维度升序

List<userInfo> userList3 = userList.stream()
	.sorted(Comparator.comparing(userInfo::getA()).thenComparing(userInfo::getId())
	.collect(Collectors.toList());

拓展,比如我们是判断某集合中对象的某个值在另外一个集合包含的往前排,其它数据再按照某字段进行排序
我们可以将集合先进行判断给包含某字段的对象新增一个字段设置值位1 ,其它的设置为2
然后先对 这个字段进行排序再按照另外的字段排序就可以达到这个效果

四、多字段区分升序降序

关键字thenComparing、Comparator.reverseOrder()

1.先以 某维度升序
2.当 某维度相同时,在以 另一维度降序

Comparator.reverseOrder()

List<userInfo> userList3 = userList.stream()
			.sorted(Comparator.comparing(userInfo::getA()).thenComparing(userInfo::getId(),Comparator.reverseOrder()))
			.collect(Collectors.toList());
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐