В этом руководстве по Java будет показано, как преобразовать ключи и значения Map в массив, список или набор. Карты Java представляют собой коллекцию пар ключ-значение. Ключи Map всегда уникальны, но могут иметь повторяющиеся значения.
1. Преобразовать карту в массив
Для демонстрационных целей давайте создадим карту со строковыми ключами и целочисленными значениями.
Map<String, Integer> map = Map.of("A",1, "B", 2, "C", 3);
Map.values() возвращает представление коллекции значений, содержащихся в этой карте. Используйте Collection.toArray() для получения массива из элементов коллекции. Этот метод принимает тип времени выполнения возвращаемого массива.
Collection<Integer> values = map.values();Integer valArray[] = values.toArray(new Integer[0]);
Аналогично мы можем собрать ключи Map в массив. Map.keyset() возвращает Set всех ключей в Map. Используя Set.toArray(), мы можем преобразовать его в массив строк.
String keyArray[] = map.keySet().toArray(new String[0]);
2. Преобразовать карту в список
Мы можем собрать значения Map в список, используя конструктор ArrayList, который принимает коллекцию значений в качестве параметра.
List<Integer> valList = new ArrayList<>(map.values());
Для достижения того же результата можно использовать Java Streams.
List<Integer> listOfValues = map.values().stream().collect(Collectors.toCollection(ArrayList::new));
Аналогично мы можем преобразовать ключи Map в List, используя простую Java и Streams.
List<String> keyList = new ArrayList<>(map.keySet()); //ArrayList ConstructorList<String> listOfKeys = map.keySet().stream().collect(Collectors.toCollection(ArrayList::new)); //Streams
3. Преобразовать карту в набор
Мы можем использовать конструктор HashSet или Streams для преобразования значений Map в Set.
Set<Integer> valSet = new HashSet<>(map.values()); //HashSet ConstructorSet<Integer> setOfValues = map.values().stream().collect(Collectors.toCollection(HashSet::new)); //using Streams
Map.keySet() возвращает представление Set всех ключей в Map.
Set<String> keySet = map.keySet();
4. Заключение
В этом уроке мы научились конвертировать ключи и значения Java Map в массив, список или набор с простыми примерами. Мы научились использовать конструкторы ArrayList и HashSet, а также API потоков.
Приятного обучения!!