如何消除Guava MultiMap值中的重复?

use*_*818 25 java collections multimap guava

码:

    Multimap<String, String> myMultimap = ArrayListMultimap.create();
    myMultimap.put("12345", "qwer");
    myMultimap.put("12345", "abcd");
    myMultimap.put("12345", "qwer");
    System.out.println(myMultimap);
Run Code Online (Sandbox Code Playgroud)

结果:

{12345=[qwer, abcd, qwer]}
Run Code Online (Sandbox Code Playgroud)

是否有可能消除重复的"qwer"?谢谢.

gus*_*afc 40

使用其中一个SetMultimap实现,例如HashMultimap:

SetMultimap<String, String> myMultimap = HashMultimap.create();
myMultimap.put("12345", "qwer");
myMultimap.put("12345", "abcd");
myMultimap.put("12345", "qwer");
System.out.println(myMultimap); // {12345=[abcd, qwer]}
Run Code Online (Sandbox Code Playgroud)

  • 正如文档所述,对计划Multimap的引用很少优于其中一个子接口,原因相同,对Collection的引用很少优于Set,List等.赋值的LHS应该是SetMultimap. (3认同)

Pau*_*ing 12

ListMultimap诸如ArrayListMultimap允许复制键-值对.尝试执行SetMultimap诸如HashMultimapTreeMultimap.

  • @StormeHawke当我阅读它时我不必眨眼,但它确实很痛苦.事情是,当你一年后回来维护这个代码时,你必须弄清楚这个特殊的轮子是如何被重新发明的.它是否包含没有值的键的空集?如果是这样,*所有*预期键是否为空值,或者仅为某些键?值中是否会出现空值?然后你开始诅咒原作者("该死的,过去我!")因为没有使用具有明确定义的合同和意图的集合,即多图. (2认同)