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 .