并集、交集和集差的Java集合方法

并集、交集和集差的Java集合方法,java,Java,我写了一个有两个不同数字集合的程序,我想知道如何从这两个集合中得到并集、交集和集差?我知道比特集有一些方法,但这些方法在这里不起作用 public class Collections { public static void main(String[] args) { // 1. Collection Set<Integer> grp1 = new HashSet<Integer>(); grp1.add(1); grp1.add(2

我写了一个有两个不同数字集合的程序,我想知道如何从这两个集合中得到并集、交集和集差?我知道比特集有一些方法,但这些方法在这里不起作用

public class Collections {

public static void main(String[] args) {

    // 1. Collection
    Set<Integer> grp1 = new HashSet<Integer>();

    grp1.add(1);
    grp1.add(2);
    grp1.add(3);
    grp1.add(4);
    grp1.add(5);

    // printing 1. collection
    System.out.println("1. collection: ");
    Iterator<Integer> i = grp1.iterator();
    while(i.hasNext()) {
        int numbers1 = i.next();
        System.out.print(numbers1 + " ");
    }
    System.out.println();   

    // 2. collection
    Set<Integer> grp2 = new HashSet<Integer>();

    grp2.add(8);
    grp2.add(7);
    grp2.add(6);
    grp2.add(5);
    grp2.add(4);

    // printing 2. collection
    System.out.println("2. collection: ");
    Iterator<Integer> y = grp2.iterator();
    while(y.hasNext()) {
        int numbers2 = y.next();
        System.out.print(numbers2 + " ");

    // Union


    // Intersection


    // Difference

         }
     }

}
公共类集合{
公共静态void main(字符串[]args){
//1.收集
Set grp1=新的HashSet();
grp1.添加(1);
grp1.添加(2);
grp1.添加(3);
grp1.添加(4);
grp1.添加(5);
//印刷1.收藏
System.out.println(“1.collection:”);
迭代器i=grp1.Iterator();
while(i.hasNext()){
int numbers1=i.next();
系统输出打印(数字1+“”);
}
System.out.println();
//2.收集
Set grp2=新的HashSet();
grp2.添加(8);
grp2.添加(7);
grp2.增加(6);
grp2.增加(5);
grp2.增加(4);
//印刷2.收藏
System.out.println(“2.collection:”);
迭代器y=grp2.Iterator();
while(y.hasNext()){
int numbers2=y.next();
系统输出打印(数字2+“”);
//联合
//交叉口
//差别
}
}
}
联合:

Set<Integer> union = new HashSet<>(grp1);
union.addAll(grp2);
Set union=newhashset(grp1);
union.addAll(grp2);
交叉口:

Set<Integer> intersection = new HashSet<>(grp1);
intersection.retainAll(grp2);
Set intersection=新哈希集(grp1);
交叉口保留(grp2);
区别:

Set<Integer> diff = new HashSet<>(grp1);
diff.removeAll(grp2);
Set diff=新哈希集(grp1);
差速移动球(grp2);
在它的类中有这些操作

Set union=Set.union(set1,set2);
集合交点=集合交点(集合1,集合2);
设置差异=设置差异(设置1、设置2);
所有这些都返回原始集合支持的不可修改视图


请参见

我希望它能以这种方式工作,但所有这些操作实际上都是破坏性的,即它们在现有集合上就地工作,并且都返回布尔值。很遗憾,您的代码没有编译。我希望如此。我已经尝试过这些方法,但在Eclipse中它们都不起作用:“”类型不匹配:无法从布尔值转换为集合“”。编辑:就像肖恩说的,他们返回布尔值。啊,真的!!我忘了签名了!那些日子scala太多了:)
Set<Integer> union = Sets.union(set1, set2);
Set<Integer> intersection = Sets.intersection(set1, set2);
Set<Integer> difference = Sets.difference(set1, set2);