Установить операции на карте - PullRequest
1 голос
/ 24 марта 2011

Как можно выполнять операции над множествами HashMap, например Collections.addAll()?

Ответы [ 4 ]

3 голосов
/ 25 марта 2011

Исходя из ваших комментариев к заданным вопросам, я думаю, что вам действительно нужен набор, а не карта.

Попробуйте

Set<String> mySet = new HashSet<String>();
mySet.addAll(...);

Используйте mySet.contains("someString"); для быстрого определения значениясуществует.Это должно быть эквивалентно тому, что вы пытаетесь сделать.

2 голосов
/ 24 марта 2011

Через, например, Map.putAll.

Вы также можете выполнять операции набора непосредственно над набором записей карты, которые вы можете получить через Map.entrySet.

С документация :

Возвращает представление Set отображений, содержащихся на этой карте. Набор поддерживается картой, поэтому изменения в карте отражаются в наборе, и наоборот.

1 голос
/ 25 марта 2011

Вы можете выполнять такие операции, как

Map<String, String> map = new HashMap<String, String>();
Set<String> set = map.keySet();
for(String s: set);
set.retainAll(set2); // keeps the keys in set2
set.removeAll(set3); // removes the keys in set3
set.remove(s);

Вы также можете превратить карту в набор.ConcurrentHashSet отсутствует, но вы можете сделать

Set<String> set = Collections.setFromMap(new ConcurrentHashMap<String, Boolean>());
1 голос
/ 24 марта 2011

Таким образом:

hashMap.putAll(map);

Из документации :

Копирует все сопоставления с указанной карты на эту карту. Эти сопоставления заменят любыесопоставления, которые эта карта имела для любого из ключей в настоящее время в указанной карте.

...