web-dev-qa-db-ja.com

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」を排除することは可能ですか?ありがとう。

26
user710818

SetMultimap の実装の1つを使用します。例: 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]}
39
gustafc

ListMultimapなどのArrayListMultimapは、重複するキーと値のペアを許可します。 SetMultimapHashMultimapなどのTreeMultimapの実装を試してください。

12
Paul Blessing

これを行うには多くの方法があります。最も簡単なのは、SetMultimapを使用することです。

あなたの与えられた例を持つJDKのみの解決策は、しかし単にMap<String, Set<String>>、一意の値のSetへの一意のキーが1つあります。

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

これを使用する利点は、外部のライブラリからデータ構造を取り込む必要がないことです。厳密にJavaコアライブラリを使用しています。

0
StormeHawke