gpt4 book ai didi

java - 在Java中的多个整数HashSet中查找所有没有重复的元素

转载 作者:搜寻专家 更新时间:2023-10-31 19:56:36 25 4
gpt4 key购买 nike

Integers 的多个 HashSet 中,我想获取所有这些没有重复的元素。即在所有 HashSet 的联合中只出现一次。我无法以编程方式将其概念化。

例如,考虑第一个集合包含{2,4,6,8,9},第二个集合包含{2,8,9},第三个集合包含{2,4,8,9}。在所有这些集合中,元素6只出现一次。

如何在Java中的多个整数HashSet中找到所有不重复的元素?

最佳答案

您可以保存至少出现一次和至少两次的元素集。这有点手动循环,但它是可能的。这将适用于任何数量的差异集,并且不会修改输入:

public static Set<E> unique(Set<? extends E>... sets){
Set<E> once = new HashSet<E>();
Set<E> twice = new HashSet<E>();

for(Set<? extends E> set:sets){
for(E el:set){
if(once.contains(el)){
twice.add(el);
} else {
once.add(el);
}
}
}

once.removeAll(twice);
return once;
}

Ideone: http://ideone.com/reGDBy

示例用法:

Set<Integer> set1, set2, set3;
...
Set<Integer> u = unique(set1, set2, set3);

评估示例:

As an example, consider set first contains {2,4,6,8,9}, second set contains {2,8,9} and third set contains {2,4,8,9}. In all these set, element 6 occurs only once.

  • 第一个内循环完成后,once包含 {2,4,6,8,9} 和 twice是空的。
  • 添加第二组:2、8 和 9 已经在 once 中设置,所以它们被添加到 twice设置。
  • once现在是 {2,4,6,8,9},twice现在是 {2,8,9}。
  • 从第三组开始:2 被重新添加到 twice , 4 添加到 twice , 8, 9 被重新添加到twice .
  • once现在是 {2,4,6,8,9}(所有集合的并集),twice现在是 {2,4,8,9}(至少出现两次的元素)。
  • 删除twice来自 once . once现在是{6}。返回 once .

关于java - 在Java中的多个整数HashSet中查找所有没有重复的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13778320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com