如何在单独的主类中调用HashSet方法
问题描述:
我正在尝试执行Java教程“Building Java Programs”第4版中提到的Java问题。问题是第11章中的编号11,页面751:如何在单独的主类中调用HashSet方法
编写一个名为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);
}
的问题是,我得到一个“非法表达式”的错误了一系列“找不到标识错误一起我想知道如果任何人有什么我可以做任何指针。 ?(我检查过是否有任何重复的问题,并且找不到任何类似的东西,因此如果有问题,请事先道歉)
答
在方法外部设置两个Sets(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);
+0
JB Nizet和IEE1394 linuxNoob谢谢你们(或者如果你们中的一个是加仑的话)。你是对的。我正在做的方法,而不是主要的集。一旦我这样做了,再次检查方法调用和方法论证本身,它就起作用了。再次感谢您处理像我这样的Newbie scrum。 –
https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html。显然,你不明白什么方法论点。阅读我链接到的教程。 –
确保你确实传入'Set'而不是'List'。另外,发布堆栈跟踪在寻求帮助时很有用。 – linuxNoob
检查。我已经将方法行更改为public static Set symmetricSetDifference(Set set1,Set set2)并删除了两个hashSet调用,但我仍然无法调用主类中的方法。 –