Итерация с entrySet()
Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 18 из 59.
Итерация с помощью entrySet() означает получение набора объектов Map.Entry из HashMap. Каждый Map.Entry предоставляет как ключ, так и соответствующее ему значение, что делает этот способ более эффективным, так как он позволяет избежать дополнительного поиска, необходимого при использовании keySet().
Создайте HashMap:
HashMap<String, Integer> inventory = new HashMap<>();
inventory.put("Laptop", 10);
inventory.put("Mouse", 50);
inventory.put("Keyboard", 30);Выполните итерацию с помощью entrySet():
for (Map.Entry<String, Integer> entry : inventory.entrySet()) {
System.out.println("Product: " +
entry.getKey() + ", Quantity: " +
entry.getValue());
}
// Product: Laptop, Quantity: 10
// Product: Mouse, Quantity: 50
// Product: Keyboard, Quantity: 30Задание
ЛегкоСоздайте метод с именем <strong>printInventoryEntrySet</strong>, который принимает HashMap (с названиями продуктов в качестве ключей и количеством в качестве значений) из строки JSON, считанной через Scanner. Ваш метод должен перебирать HashMap, используя метод entrySet(), и выводить каждую пару ключ-значение в формате:
Product: <product name>, Quantity: <quantity>Шпаргалка
Используйте entrySet() для итерации по HashMap и эффективного доступа как к ключам, так и к значениям:
HashMap<String, Integer> inventory = new HashMap<>();
inventory.put("Laptop", 10);
inventory.put("Mouse", 50);
inventory.put("Keyboard", 30);
for (Map.Entry<String, Integer> entry : inventory.entrySet()) {
System.out.println("Product: " +
entry.getKey() + ", Quantity: " +
entry.getValue());
}Каждый объект Map.Entry предоставляет:
entry.getKey()— возвращает ключentry.getValue()— возвращает значение
Этот подход более эффективен, чем использование keySet(), так как он позволяет избежать дополнительных поисков.
Попробуйте сами
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
public class Main {
public static void printInventoryEntrySet(HashMap<String, Integer> inventory) {
// Напишите свой код здесь, используя entrySet()
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inventoryString = scanner.nextLine();
// Преобразование строки JSON в HashMap<String, Integer>
Type mapType = new TypeToken<HashMap<String, Integer>>(){}.getType();
HashMap<String, Integer> inventory = new Gson().fromJson(inventoryString, mapType);
printInventoryEntrySet(inventory);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка слов