gpt4 book ai didi

java - 从多重集中删除集合的出现

转载 作者:行者123 更新时间:2023-12-02 08:34:13 25 4
gpt4 key购买 nike

Multiset中似乎应该有一个removeAllOccuring(Collection)(或类似)方法。类似于 remove(Object,int)removeAll(Collection) 。如果没有这种方法,实现其意图的最佳方法是什么。我编写了一个小型 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

最佳答案

目前还没有任何东西可以做到这一点。 :( 有一个关于此方法和其他类似方法(作为 Multisets 类的静态方法)的内部(向 Google)功能请求。我会尝试将其粘贴到外部可见的功能请求中,您可以密切关注.

编辑:不过,除了 Multiset 之外,我并不打算接受其他类型的 Collections 作为此类方法的参数。必须考虑一下。

关于java - 从多重集中删除集合的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2419144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com