HashSet<String> C=intersection(A,B); Iterator itr1=A.iterator(); Iterator itr2=B.iterator(); if(C.size()==0){ System.out.print("A对B的相对补集"); while(itr2.hasNext()){ System.out.print(itr2.next()); } System.out.println(); System.out.print("B对A的相对补集"); while(itr1.hasNext()){ System.out.print(itr1.next()); } } else if(C.size()!=0){ Iterator itr=C.iterator(); //A对B的相对补集B-A=B-A交B while (itr.hasNext()){ String temp=(String) itr.next(); if(B.contains(temp)) B.remove(temp); } System.out.print("A对B的相对补集"); while(itr2.hasNext()){ System.out.print(itr2.next()); } System.out.println(); //B对A的相对补集A-B=A-A交B while (itr.hasNext()){ String temp=(String) itr.next(); if(A.contains(temp)) A.remove(temp); } System.out.print("B对A的相对补集"); while(itr1.hasNext()){ System.out.print(itr1.next()); }
时间: 2024-02-15 07:27:33 浏览: 99
这段代码修复了上面提到的问题,使用了定义好的迭代器 itr1 和 itr2,同时在操作之前进行了初始化。此外,使用了一个新的方法 intersection(A,B) 来计算集合 A 和 B 的交集,并将其赋值给集合 C。这个方法可以保证交集中的元素不会重复,避免了之前提到的问题。最后,这段代码在计算相对补集之前,先进行了对集合 C 中元素的判断,避免了空指针异常。
相关问题
Set<Integer> A = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5)); Set<Integer> B = new HashSet<>(Arrays.asList(3, 4, 5, 6, 7)); Set<Integer> C = new HashSet<>(A); C.removeAll(B); Set<Integer> D = new HashSet<>(B); D.removeAll(A); C.addAll(D); 在JAVA中需要IMPORT嘛
在这段代码中使用了Java自带的Set、HashSet、Arrays类,因此需要使用import语句进行导入。正确的导入语句为:
```
import java.util.Set;
import java.util.HashSet;
import java.util.Arrays;
```
请注意,这些类都属于Java标准库,不需要额外导入其他的库。
A.set<object>o1 = new Hashset<>();set<object>o2 = new Hashset<>();o1.add("meituan");o2.add("meituan") B.set<object>o1 = new Hashset<>();set<object>o2 = new Hashset<>();o1.add("meituan");o2.add("meituan");o1.add("mei");o2.add("tuan") C.set<object>o1 = new Hashset<>();set<object>o2 = new Hashset<>();o1.put("meituan");o2.put("meituan");o1.put("mei");o2.put("tuan") D.integer o1 = new integer(3);string o2 = "3"; o1.equale(o2)的是哪些?
可以回答这个问题。
A和B的o1和o2是相同的,因为HashSet不允许有重复元素,所以添加相同的元素只会保留一个。
C中的代码是错误的,应该使用put方法来添加元素到Map中,而不是使用add方法。
D中的o1和o2不相等,因为它们是不同类型的对象,即使它们的值相同。
阅读全文