[英]Collection addAll removeAll returns boolean
C是Set<T>
類型的Set<T>
,F(x)返回Set的集合,我想要做的是在集合之間執行操作,如union,intersection,difference
// 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);
無論如何要做到這一點而不宣布輔助集合? (跳過/忽略布爾返回)
java.util.Collection API:
a.retainAll(b); // intersection
a.removeAll(b); // difference
a.addAll(b); // union
Google Guava com.google.common.collect.Sets API:
Sets.union(a, b);
Sets.intersection(a, b);
Sets.difference(a, b);
如果你真正需要的話,你可以寫一行代碼:
Sets.union(C, Sets.difference(F(X), F(Y)))
但請記住,結果集是只讀的,因此如果您需要真正的Set,請使用C.removeAll
怎么樣
C.addAll(A.removeAll(B)?A:A);
通常我會認為這是一個笑話,但在這種情況下,您可以保存創建列表。 在忘記澆水約3個月后,它仍然像我的“裝飾”植物一樣難看......:P
編輯:這當然也有效,但仍然會改變A.
A.removeAll(B);
C.addAll(A);
順便說一句:如果A
和B
不能在方法中更改,我認為無法創建臨時列表(無論您是否在變量中保護它)。 至少如果C
最初可以包含元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.