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
на основе списка ключей.