Перейти к основному содержимому

Получить подкарту из HashMap в Java

· 2 мин. чтения

1. Обзор

В нашем предыдущем руководстве A Guide to Java HashMap мы показали, как использовать HashMap в Java.

В этом коротком руководстве мы узнаем , как получить подкарту из HashMap на основе списка ключей.

2. Используйте поток Java 8

Например, предположим, что у нас есть HashMap и список ключей:

Map<Integer, String> map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
map.put(4, "D");
map.put(5, "E");

List<Integer> keyList = Arrays.asList(1, 2, 3);

Мы можем использовать потоки Java 8 для получения подкарты на основе keyList :

Map<Integer, String> subMap = map.entrySet().stream()
.filter(x -> keyList.contains(x.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

System.out.println(subMap);

Вывод будет выглядеть следующим образом:

{1=A, 2=B, 3=C}

3. Используйте метод keepAll()

Мы можем получить keySet карты и использовать метод continueAll() для удаления всех записей, чей ключ не находится в keyList :

map.keySet().retainAll(keyList);

Обратите внимание, что этот метод будет редактировать исходную карту . Если мы не хотим влиять на исходную карту, мы можем сначала создать новую карту, используя конструктор копирования HashMap :

Map<Integer, String> newMap = new HashMap<>(map);
newMap.keySet().retainAll(keyList);

System.out.println(newMap);

Выход такой же, как указано выше.

4. Вывод

Таким образом, мы изучили два метода получения подкарты из HashMap на основе списка ключей.