Поиск максимального значения с использованием итерации
Один из способов найти максимальное значение в Map - это пройтись по всем записям и отслеживать максимальное значение, найденное на данный момент. Этот подход работает с любой реализацией Map.
Что такое Map.Entry?
Map.Entry - это интерфейс, который представляет пару ключ-значение в Map. Он предоставляет методы для доступа как к ключу, так и к значению в паре.
Реализация итеративного подхода
Давайте модифицируем нашу Java-программу, чтобы найти максимальную цену курса с использованием итерации:
-
Откройте файл MaxValueInMap.java в WebIDE
-
Замените существующий код следующим:
import java.util.*;
public class MaxValueInMap {
public static void main(String args[]) {
// Create a HashMap to store course prices
Map<String, Integer> coursePrices = new HashMap<>();
// Variable to store the entry with maximum price
Map.Entry<String, Integer> maxEntry = null;
// Add key-value pairs to the map
coursePrices.put("Java", 5000);
coursePrices.put("Python", 3000);
coursePrices.put("CPP", 4000);
coursePrices.put("Android", 8000);
System.out.println("Course price map: " + coursePrices);
// Iterate through each entry in the map
for (Map.Entry<String, Integer> entry : coursePrices.entrySet()) {
// If maxEntry is null OR current entry's value is greater than maxEntry's value
if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) {
maxEntry = entry;
}
}
// Print the maximum price and its corresponding course
System.out.println("Course with maximum price: " + maxEntry.getKey());
System.out.println("Maximum price: " + maxEntry.getValue());
}
}
-
Сохраните файл
-
Запустите программу с помощью команды:
javac MaxValueInMap.java && java MaxValueInMap
Вы должны увидеть вывод, похожий на следующий:
Course price map: {Java=5000, CPP=4000, Android=8000, Python=3000}
Course with maximum price: Android
Maximum price: 8000
Как работает итерация
- Мы создаем переменную
maxEntry, которая изначально установлена в null
- Мы проходим по каждой записи в Map с использованием метода
entrySet()
- Для каждой записи мы сравниваем ее значение с текущим максимальным значением
- Если текущая запись имеет большее значение или если
maxEntry все еще равен null, мы обновляем maxEntry
- После завершения итерации
maxEntry содержит запись с максимальным значением
Этот подход полезен, когда вам нужны как ключ, так и значение максимальной записи.