package com.javarush.task.task08.task0804;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/*
Вывести на экран список ключей
*/
public class Solution {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("Sim", "Sim");
map.put("Tom", "Tom");
map.put("Arbus", "Arbus");
map.put("Baby", "Baby");
map.put("Cat", "Cat");
map.put("Dog", "Dog");
map.put("Eat", "Eat");
map.put("Food", "Food");
map.put("Gevey", "Gevey");
map.put("Hugs", "Hugs");
printKeys(map);
}
public static void printKeys(Map<String, String> map) {
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator(); // Что здесь происходит ???
for (int i = 0; i<map.size();i++){
Map.Entry<String,String> entry = iterator.next(); // что мы здесь делаем?
String s1 = entry.getKey();
String s2 = entry.getValue();
System.out.println(s1+" "+s2);
}
}
}
Руслан
16 уровень
Помогите не все могу понять.
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
13 апреля 2020, 13:14решение
Итератор - это примерно можно перевести на русский, как "перебиратель".
Если какой-то объект состоит из совокупности элементов, это эти элементы можно перебирать, посмотреть один за другим.
Так, список (list), состоит из элементов, словарь (map) состоит из пар ключ-значение. И то и другое можно перебрать итератором. В данном случае идет работа с мапой, состоящей из пар ключ-значение, где и то и другое - строка.
Для этого ты создаешь "перебиратель мапы" - сначала представляешь мапу в виде набора пар, и создаешь для них итератор:
Тип такой переменной - Iterator<Map.Entry<String, String>>. В треугольных скобках указывается тип данных, хранимых внутри элемента. Это так называемый дженерик, подробнее потом пройдешь, пока этого достаточно.
Так вот, ты создал итератор и поместил его в переменную iterator.
Этот метод возвращает ссылку на следующий элемент из перебираемой коллекции. Буквально, как яблоки с тарелки: Представь, у тебя на тарелке лежат 5 яблок, они не пронумерованы и никаким еще другим образом их охарактеризовать нельзя. Тебя просят, дай яблоко. Ты же не спрашиваешь, "тебе первое или четвертое?" Ты берешь одно любое и даешь.
Так и итератор. Берет один элемент и отдает его. В следующий раз на следующей итерации цикла берет следующий. И так перебирает одно за другим. +7
Руслан System Administrator в court Expert
13 апреля 2020, 13:33
Ну а это как обьяснить?
0
hidden #598481
13 апреля 2020, 13:39решение
Твой Iterator будет перебирать тип данных "Вхождение (т.е. пара) из мапы", т.е. Map.Entry.
Сама по себе "пара" ключ-значение хранит в себе ключ типа String и значение типа String,
Поэтому Entry<String, String>.
Entry - это не самостоятельный класс, он описан внутри класса Map, поэтому к нему обращение идет не просто Entry, а Map.Entry
+4