28

代码:

    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”?谢谢。

4

3 回答 3

45

使用其中一种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]}
于 2013-09-24T13:54:51.323 回答
14

一个ListMultimap这样的ArrayListMultimap允许重复的键值对。尝试SetMultimap诸如HashMultimapor的实现TreeMultimap

于 2013-09-24T13:53:20.857 回答
1

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

但是,您给定示例的仅 JDK 解决方案是简单地使用 a Map<String, Set<String>>,这将具有一个唯一值的唯一键 a Set

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

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

于 2013-09-24T13:56:54.863 回答