Повторение - Операции HashMap
Часть раздела Логика и управление потоком путешествия по Java на Coddy. Урок 21 из 59.
Задание
ЛегкоСоздай метод с именем processHashMap, который принимает один аргумент:
- HashMap с именем
products, где:- Ключи представляют названия товаров (
String). - Значения представляют цены (
Double).
- Ключи представляют названия товаров (
Выполняемые операции
- Найди товар с наибольшей ценой.
- Если несколько товаров имеют одинаковую наибольшую цену, верни любой из них.
- Если HashMap пуст, верни пустую строку (
"").
- Отфильтруй товары с ценой больше
50.00и сохрани их в новом HashMap. - Вычисли среднюю цену всех товаров.
- Если HashMap пуст, среднее значение должно быть равно
0.0.
- Если HashMap пуст, среднее значение должно быть равно
Формат возвращаемого значения
Метод должен вернуть новый HashMap со следующими парами ключ-значение:
| Ключ | Значение |
|---|---|
"Highest" | Название товара с наибольшей ценой (String). |
"Filtered" | HashMap (HashMap<String, Double>), содержащий только товары с ценами больше 50.00. |
"Average" | Средняя цена всех товаров (Double). |
Попробуйте сами
import java.util.LinkedHashMap;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
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 HashMap<String, Object> processHashMap(HashMap<String, Double> products) {
// Напишите здесь свой код
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String productsString = scanner.nextLine();
// Преобразуйте строку JSON в HashMap
Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);
HashMap<String, Object> result = processHashMap(products);
// Отсортируйте карту Filtered, чтобы обеспечить стабильный порядок вывода
Map<String, Double> filteredMap = (Map<String, Double>) result.get("Filtered");
if (filteredMap != null && !filteredMap.isEmpty()) {
Map<String, Double> sortedFiltered = filteredMap.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(a, b) -> b,
LinkedHashMap::new
));
result.put("Filtered", sortedFiltered);
}
System.out.println(result);
}
}Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка словПотренируйтесь самостоятельно: Онлайн-компилятор Java