C是类型Set<T>
的集合,F(x)返回Set的集合,我要做的是在集合之间执行诸如联合,交集,差之类的运算
// C union ( F(X) \ F(Y))
C.addAll( F(X).removeAll( F(Y)))); //error boolean because removeAll returns a boolean
替代我可以
C_aux = new HashSet<T> ( F(X));
C_aux.removeAll( F(Y));
C.addAll( C_aux);
无论如何做到这一点而无需声明辅助集合? (跳过/忽略布尔值返回)
最佳答案
怎么样
C.addAll(A.removeAll(B)?A:A);
通常,我认为这是个玩笑,但是在这种情况下,您可以保存创建列表。我忘记给它浇水约3个月后,它仍然像我的“装饰”植物一样丑陋...:P
编辑:这当然也可以,但是仍然会更改A。
A.removeAll(B);
C.addAll(A);
顺便说一句:如果无法在方法中更改
A
和B
,则我认为无法创建临时列表(无论是否将其保存在变量中)。至少C
最初可以包含元素。