【使用stream流各种排序以及常用的一些方法】
stream流的排序使用及其他的一些常用方法
·
使用stream流各种排序以及常用的一些方法
序言
处理数据时,为了使数据库交互性能更高,所以减少sql上对数据的操作,这样代码中处理数据就会变多,stream提供了很多使用的方法,下面就是对stream流简单排序使用例子的介绍。
stream流排序
单字段排序
// 查询数据
List<User> list = userService.getAll();
//对数据集合判空防止空指针异常
if (CollectionUtils.isNotEmpty(list)) {
//这里是根据userId 进行排序——升序排序
list = list.stream().sorted(Comparator.comparing(User::getUserId)).collect(Collectors.toList());
//这里是根据userId 进行排序——降序排序 reversed()
list = list.stream().sorted(Comparator.comparing(User::getUserId).reversed()).collect(Collectors.toList());
}
多字段排序
//这里是根据userId及userName进行联合升序排序
list = list.stream().sorted(Comparator.comparing(User::getUserId).thenComparing(User::getUserName)).collect(Collectors.toList());
//下面两个结果都是以userId降序userName升序排序的结果,但是查询方式不同
//先以userId升序,升序结果进行userId降序,再进行userName升序
list = list.stream().sorted(Comparator.comparing(User::getUserId).reversed().thenComparing(User::getUserName)).collect(Collectors.toList());
//先以userId降序,再进行userName升序 **推荐使用该种方式**
list = list.stream().sorted(Comparator.comparing(User::getUserId,Comparator.reverseOrder()).thenComparing(User::getUserName)).collect(Collectors.toList());
//先以userId升序,再进行userName降序
list = list.stream().sorted(Comparator.comparing(ser::getUserId).thenComparing(User::getUserName,Comparator.reverseOrder())).collect(Collectors.toList());
取出对象某个属性值的set集合
// 这里是取出对应字段集合,用于匹配数据时,判段是否存在对应数据,以免不必要的循环,提高性能
Set<Integer> userSet = list .stream().map(User::getUserId).distinct().collect(Collectors.toSet());//distinct用于去重
list 转 map
// 使用stream流将list转为map,key为指定字段的值
Map<Integer, List<User>> stationMap = list .stream().collect(Collectors.groupingBy(User::getUserId));
结语
之前总结过一篇stream流各种用法的博文,这一次主要总结排序的几种用法,还有两个常用的方法,不是职业博主,如果有错误的地方,可以指出来及时改正,有需要其他stream流使用方法的可以私信,看到会及时回复大家,谢谢
更多推荐
已为社区贡献5条内容
所有评论(0)