小猿圈Java老师给大家分享一篇关于如何实现Java8中list按照元素的某个字段去重的详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧。

list按照元素的某个字段去重

@Data

@AllArgsConstructor

@NoArgsConstructor

public class Student {

private Integer age;

private String name;

}

测试数据

List studentList = Lists.newArrayList();

studentList.add(new Student(28, "river"));

studentList.add(new Student(12, "lucy"));

studentList.add(new Student(33, "frank"));

studentList.add(new Student(33, "lucy"));

java8通过treeset去重

List studentDistinctList = studentList.stream()

.collect(Collectors.collectingAndThen

(Collectors.toCollection(() ->

new TreeSet<>(Comparator.comparing(t -> t.getName()))),

ArrayList::new

)

);

System.out.println(new Gson().toJson(studentDistinctList));

扩展distinct方法去重

List studentDistinct2List = studentList.stream().filter(StreamUtil.distinctByKey(t->t.getName()))

.collect(Collectors.toList());

System.out.println(new Gson().toJson(studentDistinct2List));

工具类

public class StreamUtil {

/**

* https://stackoverflow.com/questions/23699371/java-8-distinct-by-property

* @param keyExtractor

* @param

* @return

*/

public static Predicate distinctByKey(Function super T, ?> keyExtractor) {

Set seen = ConcurrentHashMap.newKeySet();

return t -> seen.add(keyExtractor.apply(t));

}

}

以上就是

小猿圈java

讲师对于list按照元素某个字段去重详解的介绍,相信通过以上介绍你对于Java也是有了一定的了解,学习java是不断看视频看书不断进步的过程java自学交流群:743849624,需要一点点积累才能得到质的飞跃的,想学习Java就到小猿圈去看看吧,里面有最全最新的课程等着你。

java list 元素去重_小猿圈Java开发之list按照元素某个字段去重详解相关推荐

  1. java request 处理过程_小猿圈Java开发之从代码看spring mvc请求处理过程

    原标题:小猿圈Java开发之从代码看spring mvc请求处理过程 Java作为编程界的常青树,有自己生存的独到之处,小猿圈java讲师今天就分享一个关于从代码看spring mvc请求处理过程,通 ...

  2. java 后台跳出提示_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  3. java gc 有钱人_小猿圈java之GC垃圾回收机制

    垃圾回收机制是提高性能的重要机制,所以不管学什么语言也好,垃圾回收机制都是有的,也是很重要的,小猿圈这章详解一下java的GC垃圾回收机制,需要用的或者感兴趣的朋友们,可以跟着小编学习一下. 一.GC ...

  4. 判断三角形java代码_小猿圈Java循环嵌套语法的使用介绍

    Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...

  5. 猜物品游戏java编程_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  6. java while语句打印三角形_小猿圈Java循环嵌套语法的使用介绍

    Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...

  7. 小猿圈python之python期末考试测试题(二)_小猿圈Python开发面试题(二)

    原标题:小猿圈Python开发面试题(二) 小猿圈Python老师继上一次python面试题一,接着更新python面试题二,同学们测试一做的怎么样呢?有没有把握呢,想要看答案的同学们,可以在小猿圈上 ...

  8. java五子棋悔棋代码_小猿圈前端编写JS五子棋游戏

    前段时间发的飞机大战的游戏很多小伙伴都私聊让再做个游戏,今天小猿圈web前端讲师为大家分享的是JS五子棋的游戏,想玩的小伙伴记得自己运行一下呦. JS五子棋游戏代码: 五子棋 canvas { dis ...

  9. 小猿圈python之python期末考试测试题(二)_小猿圈Python开发面试题(一)

    如果准备去找工作,建议练习一下再去,做充分的准备,去迎接面试!小猿圈加加老师给整理了一套面试题,后续还会有,想要看答案的同学可以给我留言. 一.问答题 1.说一下什么是可变类型什么是不可变类型? 2. ...

最新文章

  1. firewall添加白名单_firewall的规则设置与命令(白名单设置)
  2. Linux下的shell脚本实战之用户创建
  3. 企业的核心竞争力是什么
  4. PHP获取二维数组中某一列的值集合
  5. Linux学习 - 文件包处理命令
  6. 记录部件中GetFieldControlByFieldName(字段值样式设置)用法
  7. 用c语言简单办法做一个字典_幼儿园手工,用废纸筒做一个简单的小蝴蝶,有教程...
  8. 服务器采用虚拟化应用漂移,虚拟化技术在数字化医院建设中的应用
  9. Skywalking-01:Skywalking介绍
  10. 递归遍历树结构顺序显示并且添加到list集合
  11. Android基于TCP的局域网聊天通信
  12. 如何关闭OSX 10.11 SIP (System Integrity Protection)
  13. 女人活到后半生才会明白:兜里有钱,才有安全感
  14. terminal中常用的rvm指令
  15. 2021计算机科学调剂,2021北京科技大学计算机科学与技术专业接收调剂研究生的通知...
  16. java中的T extends Comparable ? super T
  17. NWT与HHTH两个公司的对比
  18. 安装Java反编译工具Luyten(Windows例)
  19. 原来这样可以优雅地解决小米手机后台弹窗权限问题
  20. oracle php 教程 pdf,AJAX+PHP+Oracle数据库Web开发 ((美)Lee Barney) 中文PDF扫描版 37.5M

热门文章

  1. 工厂供电MATLAB仿真,工厂供电虚拟仿真实验设计研究
  2. oracle老报604和10275,翻出来了 老东西了 , oracle 数据库解析 extent 数据结构解析...
  3. mysql80压缩版安装_裕-安装MySQL80(压缩版)
  4. mysql dump锁表_mysqldump 锁表和解锁语句
  5. java struts2 mvc_struts2的MVC模式
  6. anyview下载java,下载AnyviewMobile Games Java - 596763 - ebook txt Anyview | mobile9
  7. microsoft fix it_it狂人【14季全】
  8. 如何精通java_如何精通java技术
  9. 3d打印英语文献_DMD 激光熔覆3D打印机型设计在仿真计算中的经验分享
  10. html与js二级菜单横排,JavaScript实现横向滑出的多级菜单效果