删除集合中的元素

问题描述:

我想从其他集合中的多个集合中删除元素。是否有一种方法需要收集元素集合并将其全部删除。删除集合中的元素

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

据我所知,没有一种这样的方法。您必须在每个集合上调用它才能清除它。 通过以下链接浏览以获取更多信息。 http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html

没有内置方法,但您可以轻松编写一个方法。

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