Steam流排序去重

1、工作中我们经常会遇到排序去重问题,传统做法就是拿到数组遍历然后去重,现在我们可以使用Stream流来快速帮我们解决去重排序问题;

class Student{private Integer id;private String UserName;private Integer age;//get set省略//equals hashcode 省略 对象去重的时候需要
public class StreamDemo {public static void main(String[] args) {Student student1 = new Student(11,"a1",22);Student student2 = new Student(11,"a2",23);Student student3 = new Student(12,"a2",24);Student student5 = new Student(16,"a5",26);Student student4 = new Student(14,"a4",24);List<Student> students = Arrays.asList(student2, student1, student3, student4,student5);//对象去重students.stream().distinct().collect(Collectors.toList()).forEach(System.out::println);System.out.println("--------------------");//属性去重students.stream().filter(distinctByKey(Student::getUserName)).forEach(System.out::println);System.out.println("--------------------");//根据属性排序students.stream().sorted(Comparator.comparing(Student::getAge)).forEach(System.out::println);students.stream().filter(t->{return t.getId()%2 == 0;}).filter(u->{return u.getAge() > 22; }).map(m->{return m.getUserName().toUpperCase();}).sorted(Comparator.reverseOrder()).forEach(System.out::println);}public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {Map<Object, Boolean> seen = new ConcurrentHashMap<>();return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;}
}

返回结果如下图:

如有不足之处,请多指教。

Steam流排序去重相关推荐

  1. java中steam流的使用

    (1)数组合并 : 原始合并 定义俩个集合合并为一个集合 例子: public class 测试 {/*** 把小王合道* list中* */public static void main(Strin ...

  2. Java中Steam流的用法及使用备忘

    文章目录 Java中Steam流的用法及使用备忘 一. 流的常用创建方法 1-1 使用Collection下的 stream() 和 parallelStream() 方法 1-2 使用Arrays ...

  3. 可变参数和Steam流的基本使用

    1.可变参数 2.不可变集合 3. Steam流 3.1 对象流化 3.2 操作流的方法 3.3 收集方法 1.可变参数 内容是比较简单的,就介绍一下如何使用吧 public static void ...

  4. 记录Java Steam流的一些用法

    基础示例类: Use.java public class User {private String userId;private String userName;private Integer age ...

  5. 使用java Steam流进行逻辑分页(内存分页)

    物理分页与逻辑分页 物理分页 物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结 ...

  6. Steam流的常用操作

    steam流 Java求差集 摒弃掉数据库操作,使用内存去完成IO完成的事情. /*** 差集(基于java8新特性)优化解法2* 求List1中有的但是List2中没有的元素*/ private L ...

  7. Java中List排序去重、排序的3种方式

    1. 代码 //Java中快速对列表排序去重.排序 public class ListUtil {public static void main(String[] args) {List<Str ...

  8. Steam流的中间方法

    public class 中间方法 {public static void main(String[] args) {ArrayList<String> list=new ArrayLis ...

  9. 巧妙的 排序+去重——C语言

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的 ...

最新文章

  1. pycharm如何折叠指定代码而不是某一个函数或类或功能块
  2. Win8Metro(C#)数字图像处理--2.24二值图像闭运算
  3. 1. CMake 系列 - 从零构建动态库和静态库
  4. 目标检测方法简介:RPN(Region Proposal Network) and SSD(Single Shot MultiBox Detector)
  5. python输出结果为none_python的reverse函数翻转结果为None的问题
  6. leetcode 690. 员工的重要性(dfs)
  7. 红米note3支持html,【小米红米Note3评测】外观变化不小 金色版略显俗套_小米 红米Note3_手机评测-中关村在线...
  8. [2017-08-25]100行CSharp代码利用dynamic写个DSL(特定领域语言)
  9. karma如何与测试框架合作2之webpack
  10. [转载] Python print输出不换行没空格
  11. Trie树讲解(例题:ACWING 835,ACWING 143)
  12. 高级项目管理师/高项考试十大管理论文模板
  13. 恒力弹簧设计及寿命预测
  14. 未来三年手机拍摄将超越单反?拍摄建模的时代来了...
  15. 报错 AttributeError: ‘scipy.spatial.transform._rotation.Rotation‘ object has no attribute ‘as_dcm‘
  16. 【华为2019届校园招聘】算法工程师面试总结
  17. 黑金壁纸小程序 二开修复版源码
  18. 山东自然人电子税务局(扣缴端)_好消息!自然人电子税务局人员信息删除操作指南发布,速领!...
  19. Mybatis调用PostgreSQL存储过程实现数组入参传递
  20. 【运筹学】匈牙利法 ( 匈牙利法步骤 | 第一步 : 使行列出现 0 元素示例 )

热门文章

  1. Apollo代码解析:QP二次规划(凸优化)
  2. 辽宁省辽阳市谷歌高清卫星地图下载
  3. lol提示游戏环境异常重启计算机,lol游戏环境异常请重启机器,小编告诉你lol游戏环境异常请重启机器怎么解决...
  4. 基于SpringBoot+vue的民宿预定管理系统(源代码+数据库) 033
  5. 饶毅:中国存在大量粗制滥造研究生的问题,很多博士不合格
  6. 帮你寻找努力工作、学习、生活与不断前行的内在动机
  7. Day06-元组字典集合%冒泡排序、选择排序
  8. 如何在JavaScript中为元素添加类名?
  9. seata+eureka使用
  10. python制作热图folium_Python绘制地图神器folium入门