好像有应在多集一个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

有帮助吗?

解决方案

有什么,会做这个呢。 :(有关于这和其他类似的方法内部(到谷歌)的功能要求(如为多集类的静态方法),我会尽量把它粘贴到一个外部可见的功能要求,你可以留意

编辑:我还没有打算接受其他类型的集合,除了多集作为参数传递给这些方法,虽然。将不得不考虑这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top