当前位置: 首页 > news >正文

Java8 根据自定义属性去重

一、需求背景

      有一个List集合,里面有n个Answer成员,成员种有m个属性,即: List<Answer> answers = ...,现在我需要根据Answer的某一个属性对List去重(属性不固定),应该如何实现呢?

二、解决办法

      需要满足上述需求,并不难,我们可以使用Java8提供的流式编程接口来完成:

  1. 自定义一个去重方法:
  /*** 根据传入的key去重* @param keyExtractor* @param <T>* @return*/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;}
  1. 调用该方法
List<Answer> distinctAnswers = 	answerList.stream().filter(distinctByKey(Answer::getAnswerCode)) .collect(Collectors.toList());

通过如上调用,我们得到的就是一个根据自定义属性去重后的list.

http://www.lryc.cn/news/253276.html

相关文章:

  • Netty网络编程
  • 层三交换机解析(Layer 3 Switch)层3交换机
  • expect自动化交互
  • 探究两个互联网时代的差异,Web 2.0 与 Web 3.0 区别
  • c++基本常见错误总结
  • 鸿蒙原生应用/元服务开发-AGC分发如何生成密钥和和证书请求文件
  • Python自动化——driver.switch_to的用法
  • 【Java技术专题】「入门到精通系列教程」深入探索Java特性中泛型技术体系的原理和实战开发指南
  • 基于Java SSM邮局订报管理系统
  • 【优选算法系列】【专题一双指针】第四节.15. 三数之和和18. 四数之和
  • 字符集——带你了解UTF-8的前世今生
  • 数据分析工具比较:Excel vs Python vs R
  • Java基础数据类型
  • Linux-Linux安装JDK及配置环境 及 遇到的问题
  • 后端架构的一些知识
  • golang使用sip实现语音通话
  • 【1day】蓝凌OA 系统custom.jsp 接口任意文件读取漏洞学习
  • OWASP Web 安全测试指南-Web 应用程序安全测试
  • oracle FUNCTION(任意两个时间 之间的工作小时)
  • 【“C++ 精妙之道:解锁模板奇谭与STL精粹之门“】
  • el-date-picker时间控制范围为过去时间不可选
  • 音视频技术开发周刊 | 322
  • 面试就是这么简单,offer拿到手软(三)—— 常见中间件框架面试题,es,redis,dubbo,zookeeper kafka 等
  • 【Spring系列】DeferredResult异步处理
  • 使用晶振遇到的两个问题
  • 手写promise A+、catch、finally、all、allsettled、any、race
  • 【原神游戏开发日志1】缘起
  • leetcode5 最长公共前缀三种python解法
  • 对小程序的初了解
  • QLineEdit 的 InputMask掩码