首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实现集合论与对象集的并集和交集?

如何实现集合论与对象集的并集和交集?
EN

Stack Overflow用户
提问于 2012-12-20 17:07:43
回答 4查看 2.9K关注 0票数 2

大家好,我看过这个,当你有两组数据时,如何实现并集和交集,也就是strings.how,当我的数据集包含对象时,我能做同样的事情吗?,我只想得到每个对象的一个属性的并集?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-20 17:35:16

,但是我想以某种方式覆盖它们,这样它就不会添加一个对象,如果我的集合中已经有一个对象,在选定的property.If中有相同的值,我不太清楚,告诉我,这样我就可以写一个例子。

我认为最好的方法是使用ConcurrentMap。

代码语言:javascript
复制
ConcurrentMap<String, MyType> map = new ConcurrentHashMap<>();

// the collection to retain.
for(MyType mt: retainedSet) map.put(mt.getKey(), mt);

// the collection to keep if not duplicated
for(MyType mt: onlyIfNewSet) map.putIfAbsent(mt.getKey(), mt);

// to get the intersection.
Set<String> toKeep = new HashSet<>();
for(MyType mt: onlyIfNewSet) toKeep.add(mt.getKey());

// keep only the keys which match.
map.keySet().retainAll(toKeep);
票数 2
EN

Stack Overflow用户

发布于 2012-12-20 17:24:44

Google Guava有包含这些方法和更多方法的集合类。

票数 1
EN

Stack Overflow用户

发布于 2012-12-20 17:17:07

交集使用的是contains,它使用的是equals。你应该在你想做交集的类上实现equals()方法。

我没有找到关于set.addAll()实现的具体注释,但它很可能还使用equals()来确定对象是否已经在集合中。

如果你想只比较一个字段,你的equals()应该只比较这个字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13968563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档