Java:有没有一种简单、快捷的方法来将 AND、OR 或 XOR 集组合在一起?

2022-09-02 05:34:32

也就是说,如果我有两个或更多集合,并且我想返回一个包含以下任一集合的新集合:

  1. 每个集合具有共同点的所有元素 (AND)。
  2. 每个集合 (OR) 的所有元素总计。
  3. 每个集合所特有的所有元素。(异或)。

有没有一种简单的,预先存在的方法来做到这一点?

编辑:这是错误的术语,不是吗?


答案 1

假设 2 设置对象 a 和 b

AND(两组的交集)

a.retainAll(b); 

OR(两组并集)

a.addAll(b);

异或要么滚动你自己的循环:

foreach item
if(a.contains(item) and !b.contains(item) ||  (!a.contains(item) and b.contains(item)))
 c.add(item)

或执行此操作:

c.addAll(a); 
c.addAll(b);
a.retainAll(b); //a now has the intersection of a and b
c.removeAll(a); 

请参阅设置文档此页面。了解更多。


答案 2

您可以使用 Google-Collections Sets 类,该类具有交集() union() 和 symmetricDifference() 的方法。

Sets.intersection(set1, set2);
Sets.union(set1, set2);

SetView view = Sets.intersection(Sets.union(set1, set2), set3);
Set result = view.copyInto(new HashSet());