我有3套,我正在使用sets
HashSet<String> set_1 =new HashSet<String>();
set_1.add("1");
set_1.add("2");
set_1.add("3");
HashSet<String> set_2 =new HashSet<String>();
set_2.add("4");
set_2.add("5");
set_2.add("6");
HashSet<String> set_3 =new HashSet<String>();
set_3.add("7");
set_3.add("8");
set_3.add("9");
我需要计算这些集合的并集,交集,差异和功效
我用联盟
尝试了这个Set<String> uni_temp = new HashSet<String>();
uni_temp.addAll(set_1);
uni_temp.addAll(set_2);
uni_temp.addAll(set_3);
但它只使set_1
和set_2
的联合如此
[1, 2, 3, 4, 5, 6]
答案 0 :(得分:2)
如果您初始化set_1
,set_2
和set_3
,如下所示,您的工会尝试就会有效:
Set<String> set_1 = new HashSet<String>(Arrays.asList("1", "2", "3"));
Set<String> set_2 = new HashSet<String>(Arrays.asList("4", "5", "6"));
Set<String> set_3 = new HashSet<String>(Arrays.asList("7", "8", "9"));
Set<String> uni_temp = new HashSet<String>();
uni_temp.addAll(set_1);
uni_temp.addAll(set_2);
uni_temp.addAll(set_3);
System.out.println(Arrays.toString(uni_temp.toArray())); //[1, 2, 3, 4, 5, 7, 8, 9]
修改:如果您将字符串添加到适当的变量名称而不是未知变量set
,则更新的代码将起作用:
HashSet<String> set_1 = new HashSet<String>();
set_1.add("1");
set_1.add("2");
set_1.add("3");
HashSet<String> set_2 = new HashSet<String>();
set_2.add("4");
set_2.add("5");
set_2.add("6");
HashSet<String> set_3 = new HashSet<String>();
set_3.add("7");
set_3.add("8");
set_3.add("9");
一般情况下,假设您有两个变量名为a
和b
的集:
获取交叉点:a.retainAll(b);
获得差异:a.removeAll(b);
答案 1 :(得分:1)
您可以尝试:
HashSet<String> union = new HashSet<String>(set_1);
union.addAll(set_2);
union.addAll(set_3);
System.out.println(union);
HashSet<String> intersection = new HashSet<String>(set_1);
intersection.retainAll(set_2);
intersection.retainAll(set_3);
System.out.println(intersection);
答案 2 :(得分:0)
使用您的示例,您应该从代码中获取联合,如以下示例所示
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
Set<Integer> set3 = new HashSet<>();
for(int i = 1; i < 4; i++)
{
set1.add(i);
set2.add(i + 3);
set3.add(i + 6);
}
Set<Integer> uni_temp = new HashSet<Integer>();
uni_temp.addAll(set1);
uni_temp.addAll(set2);
uni_temp.addAll(set3);
java.util.Iterator<Integer> iterator = uni_temp.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
输出
1
2
3
4
5
6
7
8
9
注意我使用的是Integers而不是Strings
答案 3 :(得分:0)
您也可以使用Google收藏集中的Sets.union()
Sets.union(Sets.union(a, b), c);