2015-02-05 4 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

아니, 당신이 하나를 작성할 수 있습니다. –

+0

* "요소 컬렉션 집합을 취하고 모든 요소를 ​​제거하는 단일 메서드가 있습니까?"* 잘, [있습니다] (http://docs.oracle.com/javase/8/docs/api/java) /util/Collection.html#method.summary)? –

+2

이것은 별다른 문제가 아닙니다. Collection >에'Collection '을 추가하고 각 요소를 사용하여'removeAll'을 반복합니다. –

답변

0

기본 제공 방법은 없지만 쉽게 작성할 수 있습니다.

자바 7 :

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

자바 8 :

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

그런 다음, 단순히 :

removeAllOf(mainCollection, coll1, coll2, coll3);