我正在尝试解决教科书“构建Java程序”第4版中提到的Java问题。问题是第11章第7页第11页:
编写一个名为symmetricSetDifference的方法,它接受两个集合作为参数,并返回一个包含其对称差异的新集合(即两个集合中包含的元素集合,但两个集合中都没有)例如:差异集合[1,4,7,9]和[2,4,5,6,7]之间是[1,2,5,6,9]。
symmetricSetDifference方法:
public static Set<Integer>symmetricSetDifference(Set<Integer>list1, Set<Integer>list2) {
Set<Integer>set1 = new HashSet<>();
set1.add(1);
set1.add(4);
set1.add(7);
set1.add(9);
Set<Integer>set2 = new HashSet<>();
set2.add(2);
set2.add(4);
set2.add(5);
set2.add(6);
set2.add(7);
Set<Integer>diff = new HashSet<>(set1);
diff.addAll(set2);
Set<Integer>curr = new HashSet<>(set1);
curr.retainAll(set2);
diff.removeAll(curr);
System.out.println(diff);
return diff;
}
这是主要课程。它在一个单独的文件中:
public class TestPointClass {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
newSet = MyUtils.symmetricSetDifference(List1, List2);
}
问题是我得到一个“非法表达”错误以及一系列“无法找到标识符错误。我想知道是否有人对我能做什么有任何指示?(我已检查过任何重复的问题并且找不到类似的东西,因此如果有的话,提前道歉
答案 0 :(得分:0)
在方法外部设置两个集合(set1,set2)并将它们添加为参数:
Set<Integer>set1 = new HashSet<>();
set1.add(1);
...
Set<Integer>set2 = new HashSet<>();
set2.add(2);
...
MyUtils.symmetricSetDifference(set1 , set2 );
如果你想使用返回类型,你必须这样做:
Set<Integer> result = MyUtils.symmetricSetDifference(set1 , set2 );