Преобразование Map в List на Java — keySet, values и entrySet
Чтобы понять этот пример, нужно знать следующие темы:
Интерфейс Map в Java
HashMap в Java
Список (List) в Java
ArrayList в Java
Пример 1: Преобразование Map в List
import java.util.*;
public class MapList {
public static void main(String[] args) {
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 = new ArrayList(map.keySet());
List<String> valueList = new ArrayList(map.values());
System.out.println("Key List: " + keyList);
System.out.println("Value List: " + valueList);
}
}
Вывод:
Key List: [1, 2, 3, 4, 5]
Value List: [a, b, c, d, e]
В программе выше у нас есть map типа Integer и String с именем map. Поскольку map содержит пары ключ-значение, нам нужно два списка, чтобы хранить каждый из них, а именно keyList для ключей и valueList для значений.
Мы использовали метод keySet() map, чтобы получить все ключи, и создали из них ArrayList keyList. Аналогично мы использовали метод values() map, чтобы получить все значения, и создали из них ArrayList valueList.
Пример 2: Преобразование Map в List с помощью stream
import java.util.*;
import java.util.stream.Collectors;
public class MapList {
public static void main(String[] args) {
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 = map.keySet().stream().collect(Collectors.toList());
List<String> valueList = map.values().stream().collect(Collectors.toList());
System.out.println("Key List: " + keyList);
System.out.println("Value List: " + valueList);
}
}
Вывод программы такой же, как в Примере 1.
В программе выше вместо использования конструктора ArrayList мы использовали stream(), чтобы преобразовать map в список.
Мы преобразовали ключи и значения в поток и преобразовали его в список с помощью метода collect(), передавая toList() в качестве параметра.