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


顺便说一句:如果无法在方法中更改AB,则我认为无法创建临时列表(无论是否将其保存在变量中)。至少C最初可以包含元素。

10-04 23:30
查看更多