前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发实践,怎么用Lambda进行list合并以及去重

开发实践,怎么用Lambda进行list合并以及去重

作者头像
用户1289394
发布2023-08-22 15:35:56
4810
发布2023-08-22 15:35:56
举报
文章被收录于专栏:Java学习网

在实际开发中可以使用Lambda表达式对两个List进行合并和去重操作。假设有两个List,分别为list1和list2,并且这两个List中存储的元素类型相同,那么您可以使用下面的Lambda表达式实现合并和去重的操作:

代码语言:javascript
复制


List<Type> mergedList = Stream.concat(list1.stream(), list2.stream())

.distinct()

.collect(Collectors.toList());

上述代码中,使用了Stream.concat()方法将两个List进行合并,然后使用distinct()方法去重,最后使用collect()方法将结果转换为List类型。

注意,在使用distinct()方法时,需要确保Type类已经正确实现了equals()和hashCode()方法,这才能够正常去重。如果Type类没有正确实现这两个方法,那么可以使用它的某一个属性进行去重比较,例如:

代码语言:javascript
复制


List<Type> mergedList = Stream.concat(list1.stream(), list2.stream())

.distinct()

.collect(Collectors.toList());

List<Type> mergedListWithDistinctName = mergedList.stream()

.collect(Collectors.toMap(Type::getName, Function.identity(), (existing, replacement) -> existing))

.values()

.stream()

.collect(Collectors.toList());

上述代码中,首先对mergedList进行去重,在这里我们使用默认的equals()和hashCode()方法;然后使用toMap()方法将List转换为一个Map,其中key是Type对象的name属性,value是Type对象本身;在这个过程中,使用了一个lambda表达式作为第二个参数,把Type对象映射为它本身;最后使用values()方法获取到Map中的所有value,然后再次使用stream()方法进行操作,使用默认的distinct()方法进行去重,最后使用collect()方法将结果转换为List类型。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档