如何在单独的主类中调用HashSet方法

时间:2017-11-03 22:37:09

标签: java set hashset

我正在尝试解决教科书“构建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);
}

问题是我得到一个“非法表达”错误以及一系列“无法找到标识符错误。我想知道是否有人对我能做什么有任何指示?(我已检查过任何重复的问题并且找不到类似的东西,因此如果有的话,提前道歉

1 个答案:

答案 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 );