문제
멀티 세트에 제거 (수집) (또는 비슷한) 메소드가 있어야합니다. 일종의 아날로그 제거 (Object, int) 그리고 removeall (컬렉션). 그 방법에 미치지 못하면 의도를 달성하는 가장 좋은 방법은 무엇입니까? 나는 작은 주니 드라이버를 썼다 :
/**
* @see http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multiset.html
* @see http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/HashMultiset.html
*/
@Test
public void testBag() {
Multiset<String> bag1 = HashMultiset.create();
bag1.add("a", 2);
bag1.add("b", 3);
bag1.add("c", 3);
logger.debug(bag1);
Multiset<String> bag1Copy = HashMultiset.create(bag1);
Multiset<String> bag2 = ImmutableMultiset.of("a","b","b","b","c","c");
Multiset<String> expected = ImmutableMultiset.of("a","c");
for( String el : bag2.elementSet() ) {
bag1.remove( el, bag2.count(el));
} // end for
Assert.assertEquals(expected, bag1);
bag1Copy.removeAll(bag2);
logger.debug( bag1Copy );
}
출력 :
[b x 3, c x 3, a x 2]
[]
나는 내가 누락되거나 제거 할 컬렉션을 루핑하는 것과 다른/더 나은 방법이 있다면 AA 방식이있을 수 있다고 생각합니다. 또한 컬렉션을 제거 할 수있는 유스 케이스를 쉽게 가질 수 있습니다. List
해결책
아직 이것을 할 일이 없습니다. :(이 기능 및 기타 유사한 방법에 대한 내부 (Google to Google) 기능 요청이 있습니다 (Multisets 클래스의 정적 메소드). .
편집하다: 그러나 나는 그 방법의 매개 변수로서 멀티 세트 외에 다른 종류의 컬렉션을 받아 들일 계획이 없었습니다. 그것에 대해 생각해야 할 것입니다.
제휴하지 않습니다 StackOverflow