Пробежаться по словарю, отображению (Map)

126
17 октября 2019, 08:30

Помогите разобраться пример:

Map<Integer, String> map = new HashMap<>();
        map.put(1, "Vasilisa");
        map.put(2, "Marina");
        map.put(3, "Kate");
        for (Map.Entry<Integer, String> entry: map.entrySet()){
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }

Из Java docs, не очень с техническим английским поэтому пользуюсь переводчиком.

Метод Map.entrySet возвращает коллекционное представление карты, элементы которой принадлежат этому классу. Только способ получить ссылку на запись карты от итератора этой коллекции ракурса. Эти объекты Map.Entry действительны только в течение итерации; более формально, поведение записи карты не определено, если базовая карта была изменена после того, как запись была возвращена итератором, за исключением операции setValue в записи карты.

Не очень понимаю зачем мы делаем вот это:

Map.Entry <Integer, String> entry: map.entrySet()

Сначали Тип потом Переменная потом Коллекция/Массив, но не очень понимаю зачем писать Map.Entry + потом еще не просто map, а именно map.entrySet().
Помогите разобрать понятным и простым языком, заранее спасибо!

Answer 1

Элемент, по которому вы хотите пробежаться с использованием конструкции for-each цикла должен реализовывать интерфейс Iterable.

Поскольку Map не реализует Iterable, вам нужно преобразовать его в некую иную форму, которая будет Iterable. Собственно, это и делает метод entrySet, возвращает вам Set пар ключ-значение (т.е. Set<Map.Entry>), а Set является Iterable. Map.Entry - это просто интерфейс Entry, который представляет собой пару ключ-значение, пишем мы Map.Entry, потому что Entry - интерфейс, определенный в классе Map, так называемый Nested-интерфейс.

READ ALSO
Как привести inputstream к fileinputstream

Как привести inputstream к fileinputstream

Как привести inputstream к fileinputstream? Так метод не работает:

121
JavaFX проблемы с jar файлом

JavaFX проблемы с jar файлом

Здраствуйте, я написал FX приложение которое состоит из 3-ех окон

131
При использовании Spring Data JPA через DAO, вылетает NoSuchBeanDefinitionException, помогите понять где допустил ошибку

При использовании Spring Data JPA через DAO, вылетает NoSuchBeanDefinitionException, помогите понять где допустил ошибку

Ниже приведу кусок кода main,ошибку,applicationContextxml,реализацию dao если нужно что-то ещё напишите, добавлю

121
Java прерывание потоков

Java прерывание потоков

Интересует, как реагирует поток, который закрывается извне, если он содержит работу с сокетной системой, а именно: Закрываются ли сокеты и стирается...

131