2015-02-05 93 views
-4

我想從其他集合中的多個集合中刪除元素。是否有一種方法需要收集元素集合並將其全部刪除。刪除集合中的元素

Collection<String> coll1; 
Collection<String> coll2; 
Collection<String> coll3; 
Collection<String> mainCollection; 

mainCollection.removeAll(coll1); 
mainCollection.removeAll(coll2); 
mainCollection.removeAll(coll3); 

我不喜歡在每個集合上分別調用removeAll。有沒有一種方法可以做到這一點。

+0

沒有,但你可以寫一個。 – 2015-02-05 17:03:35

+0

*「是否有一種方法需要收集元素的集合並將其全部刪除?」*好吧,[有](http://docs.oracle.com/javase/8/docs/api/java /util/Collection.html#method.summary)? – 2015-02-05 17:04:10

+2

這是一個非問題。將'Collection '添加到'Collection >'並循環使用每個元素來'removeAll'。 – 2015-02-05 17:04:31

回答

0

沒有內置方法,但您可以輕鬆編寫一個方法。

的Java 7:

<E> void removeAllOf(Collection<E> removeFrom, Collection<E>... toRemove) { 
    for (Collection<E> remove : toRemove) { 
     removeFrom.removeAll(remove); 
    } 
} 

的Java 8:

<E> void removeAllOf(Collection<E> removeFrom, Collection<E>... toRemove) { 
    Arrays.stream(toRemove).forEach(removeFrom::removeAll); 
} 

然後,只需:

removeAllOf(mainCollection, coll1, coll2, coll3);