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

时间:2013-09-24 13:47:36

标签: java collections guava multimap

代码:

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

结果:

{12345=[qwer, abcd, qwer]}

是否可以消除重复的“qwer”? 感谢。

3 个答案:

答案 0 :(得分:37)

使用其中一个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]}

答案 1 :(得分:12)

ListMultimapArrayListMultimap允许重复的键值对。尝试SetMultimap的实施,例如HashMultimapTreeMultimap

答案 2 :(得分:0)

有很多方法可以做到这一点。最简单的方法是使用SetMultimap

使用给定示例的仅JDK解决方案只是使用Map<String, Set<String>>,它将拥有Set个唯一值的唯一键。

Map<String, Set<String>> map = new HashMap<String, Set<String>>();

使用它的好处是你不必从外部库引入数据结构,你严格使用java核心库。