题
好像有应在多集一个removalAllOccuring(集合)(或similiar)方法。 A排序模拟到除去(对象,INT)和的removeAll(集合)。短期这种方法,什么是实现其目的的最佳途径。我写了一个小的JUnit驱动证明:
/**
* @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]
[]
我想有可能是提供了一种方式,我的思念,或者被删除比遍历集合不同/更好的办法。另外请注意,我可以很容易地有使用情况下要删除的集合是List
解决方案
有什么,会做这个呢。 :(有关于这和其他类似的方法内部(到谷歌)的功能要求(如为多集类的静态方法),我会尽量把它粘贴到一个外部可见的功能要求,你可以留意
编辑:我还没有打算接受其他类型的集合,除了多集作为参数传递给这些方法,虽然。将不得不考虑这一点。
不隶属于 StackOverflow