Подтвердить что ты не робот

Как устранить дубликаты в значениях 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"? Спасибо.

4b9b3361

Ответ 1

Используйте одну из 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]}

Ответ 2

A ListMultimap, например ArrayListMultimap, позволяет дублировать пары ключ-значение. Попробуйте реализовать SetMultimap, например HashMultimap или TreeMultimap.

Ответ 3

Есть много способов сделать это. Самым простым было бы использовать SetMultimap.

Единственное решение JDK с вашим примером - это просто использовать Map<String, Set<String>>, который имеет один уникальный ключ для Set уникальных значений.

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

Преимущество использования этого в том, что вам не нужно вводить структуры данных из внешних библиотек, вы строго используете основные библиотеки java.