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