Java8 list 根据自定义对象多个属性去重复

news/2024/11/8 9:33:41/

1. 对象多个属性代码实现:

 List<IcsCheckReport>  resultList = resultListAll.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(IcsCheckReport::getChkId).thenComparing(IcsCheckReport::getFeatureId).thenComparing(IcsCheckReport::getBatchId))), ArrayList::new));

2. 单个对象去重:

 List<IcsCheckReport>  resultList = resultListAll.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(IcsCheckReport::getChkId)), ArrayList::new));

3. 其他方式,可以新建一个List,遍历list判断对象属性,add到新list中。

List<IcsCheckReport> icsCheckReports = new ArrayList<>();HashMap<String, String> map = new HashMap<>();for (IcsCheckReport r1 : icsCheckReports) {String key = r1.getChkId() + r1.getFeatureId() + r1.getBatchId();if (!map.containsKey(key)) {map.put(key, r1.getFeatureId());icsCheckReports.add(r1);}}

4.使用filter过滤

     /***  去重后对象在集合中顺序跟原集合一样*  List对象去重,按照对象的某个字段去重,返回去重后新的对象集合*  使用方法:用Stream接口的 filter()接收为参数* */public <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {Map<Object,Boolean> seen = new ConcurrentHashMap<>();return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;}/****  调用检查过了*/public void   main(){try {resultList = resultListAll.stream().filter(distinctByKey(test -> Stream.of(test.getChkId(),test.getFeatureId(),test.getBatchId()).toArray())).collect(Collectors.toList());} catch (Exception e) {log.error("过滤重复要素ID失败", e);e.printStackTrace();}
}


http://www.ppmy.cn/news/730863.html

相关文章

pinia状态管理

1.pinia是什么&#xff1f; 官网解释&#xff1a; Pinia 是 Vue 的存储库&#xff0c;它允许您跨组件/页面共享状态。 2.为什么要使用pinia&#xff1f; 优点&#xff1a; Vue2和Vue3都支持&#xff0c;这让我们同时使用Vue2和Vue3的小伙伴都能很快上手。pinia中只有state、…

荣耀游戏本智慧新体验!这些功能太“奥利给”

荣耀在发布猎人游戏本V700之前&#xff0c;已经在笔记本行业深耕多年&#xff0c;打造多款口碑不错的轻薄本。这一次自信满满、来势汹汹的进军游戏本行业也为玩家们带来佳作。甚至&#xff0c;把轻薄本上的“真香”功能&#xff0c;运动到了游戏本身上。    今天就来说说不一…

四核处理器_【购机提问】强处理器机型怎么选?4500元价位办公有啥推荐?

又到了一周的末尾&#xff0c;今天主要回答大家的购机提问。2020年也快走完了一半&#xff0c;在今年前几个月里&#xff0c;新品是一波接一波地来&#xff0c;有的机型价格香&#xff0c;有的机型规格高&#xff0c;有的机型设计造型前卫有创造力&#xff0c;还有的机型暂时存…

小新air14学计算机,小新Air14对比小新Pro13哪个更香,盘点办公学习的

小新Air14对比小新Pro13哪个更香&#xff0c;盘点办公学习的好本本 目前虽然笔记本电脑没有以前热门了但是实用性还是无人能替代的尤其他的便携性&#xff0c;目前电脑配置也是越来越高了&#xff0c;不仅有专门的商务本 学习本 游戏本都有各自的特色领域&#xff0c;所以在购买…

计算机cpu性能过剩吗,如何选择合适的CPU想避免坑就来看看吧

CPU是一台电脑的主要部件&#xff0c;往往决定着一台电脑性能的高低。读懂CPU的关键数据&#xff0c;对我们选购适合自己的电脑至关重要。 你知道吗&#xff0c;CPU性能i7的不一定比i5的高&#xff0c;这是因为CPU的架构很重要&#xff0c;也就是“代数”&#xff0c;架构对CPU…

高中上计算机专业用买电脑吗,我是高中毕业生,要上大学该买什么电脑?

这个问题是这样的&#xff0c;建议拿到录取通知书之前&#xff0c;先别急着买电脑。 因为买什么电脑&#xff0c;是与专业相关的。还是拿买车举例子&#xff0c;挖掘机专业要买个挖掘机&#xff0c;你买个跑车&#xff0c;挖不了地。 另外&#xff0c;并不是所有专业都会用到电…

高性能游戏本搭服务器,高性能游戏本盘点,玩游戏拒绝卡顿!

原标题&#xff1a;高性能游戏本盘点&#xff0c;玩游戏拒绝卡顿&#xff01; 2018年结束之后&#xff0c;很多人都想购买一台游戏本玩游戏&#xff0c;算是犒劳一下自己&#xff0c;也算是努力一整年来给自己送一份好礼物吧。而在上年&#xff0c;各厂商都发布了不少游戏本新品…

【Linux】什么是文件系统及inode?如何创建软硬链接?软硬链接有什么作用?

inode软硬链接创建软硬链接理解硬链接理解软链接 inode 了解一下文件系统&#xff1a; Linux ext2文件系统&#xff0c;上图为磁盘文件系统图&#xff08;内核内存映像肯定有所不同&#xff09;&#xff0c;磁盘是典型的块设备&#xff0c;硬盘分区被 划分为一个个的block。…