java并集/相交两个集合而不改变其中一个集合
这是我的代码:
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.event.ListSelectionEvent;
public enum SetOperation {
AND(){
public Set operate(Set one, Set two){
one.retainAll(two);
return one;
}
},
OR(){
public Set operate(Set one, Set two){
one.addAll(two);
return one;
}
};
public abstract Set operate(Set one, Set two);
public static void main(String[] args){
Set<Integer> inta = new HashSet<Integer>();
inta.add(1);
inta.add(2);
inta.add(3);
Set<Integer> intb = new HashSet<Integer>();
intb.add(3);
intb.add(4);
intb.add(5);
System.out.println("A:" + inta);
System.out.println("B:" + intb);
System.out.println("\n Or Operation");
System.out.println(SetOperation.OR.operate(inta, intb));
System.out.println("A:" + inta);
System.out.println("B:" + intb);
System.out.println("\n AND Operation");
System.out.println(SetOperation.AND.operate(inta, intb));
System.out.println("A:" + inta);
System.out.println("B:" + intb);
}
}
我想做的是能够得到两个集合的交集和并集,但我的问题是,在进行运算时,第一个集合被改变了,我不希望这样
我的意思是:
集合A和集合B的常规输出为
[1, 2, 3]
[3, 4, 5]
但是做了手术后,我得到的是
[1, 2, 3, 4, 5]
A:[1, 2, 3, 4, 5]
B:[3, 4, 5]
是的,它合并了两个集合,但是集合A被修改为合并的结果,我希望它保持不变,所以集合A应该保持为[1,2,3],而不是改变
AND操作也会发生同样的情况,我的结果是
AND Operation
[3, 4, 5]
A:[3, 4, 5]
B:[3, 4, 5]
它返回一个不需要的结果,因为它从OR操作中获取集合A,这也不是我想要的
有没有办法使我的电视机在手术后不会改变
# 1 楼答案
尝试创建一个新的临时设置,并运行该设置的操作