0
似乎應該在Multiset中刪除AllAccount(Collection)(或類似的)方法。一種模擬remove(Object,int)和removeAll(Collection)。缺少這種方法,完成其意圖的最佳方式是什麼?我寫了一個小的JUnit司機證明:從Multiset中刪除集合的事件
/**
* @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