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

Карта Java — методы keySet(), entrySet(), vs. values()

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

1. Обзор

В этом руководстве мы обсудим три метода keySet() , entrySet() и values() интерфейса Map в Java. Эти методы используются для получения набора ключей, набора сопоставлений ключ-значение и набора значений соответственно.

2. Инициализация карты

Хотя мы можем использовать эти методы в любом классе, реализующем интерфейс Map , таком как HashMap, TreeMap и LinkedHashMap , здесь мы будем работать с HashMap .

Давайте создадим и инициализируем HashMap , ключ которого имеет тип String , а значение имеет тип Integer :

Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);

3. Метод keySet ()

Метод keySet() возвращает набор ключей, содержащихся в карте .

Давайте применим метод keySet() к карте и сохраним его в переменной Set factValues :

Set<String> actualValues = map.keySet();

Теперь давайте подтвердим, что размер возвращаемого набора равен 2:

assertEquals(2, actualValues.size());

Далее мы видим, что возвращаемый Set содержит ключи Map :

assertTrue(actualValues.contains("one"));
assertTrue(actualValues.contains("two"));

4. Метод entrySet ()

Метод entrySet() возвращает набор сопоставлений ключ-значение. Метод не принимает никаких параметров и имеет возвращаемый тип Set of Map.Entry.

Давайте применим метод entrySet() к карте:

Set<Map.Entry<String, Integer>> actualValues = map.entrySet();

Как мы видим, factValues это набор объектов Map.Entry .

Map.Entry — это статический интерфейс, который содержит как ключ, так и значение. Внутри у него есть две реализации — AbstractMap.SimpleEntry и AbstractMap.SimpleImmutableEntry .

Как и раньше, давайте подтвердим, что размер возвращаемого набора равен 2:

assertEquals(2, actualValues.size());

Кроме того, мы видим, что возвращенный Set содержит записи ключ-значение Map :

assertTrue(actualValues.contains(new SimpleEntry<>("one", 1)));
assertTrue(actualValues.contains(new SimpleEntry<>("two", 2)));

Здесь мы выбрали для нашего теста реализацию интерфейса Map.Entry AbstractMap.SimpleEntry . ``

5. Метод значений ()

Метод values() возвращает коллекцию значений, содержащуюся в M ap . Метод не принимает никаких параметров и имеет возвращаемый тип Collection.

Давайте применим метод values() к Map и сохраним его в переменной Collection factValues:

Collection<Integer> actualValues = map.values();

Теперь давайте проверим размер возвращаемой коллекции:

assertEquals(2, actualValues.size());

Далее мы видим, что возвращаемый Set содержит значения Map :

assertTrue(actualValues.contains(1));
assertTrue(actualValues.contains(2));

6. Заключение

В этой статье мы обсудили методы keySet() , entrySet() и values() интерфейса Map .

Как обычно, полный исходный код доступен на GitHub .