Повторение - Операции HashMap
Часть раздела Логика и управление потоком путешествия по Java на Coddy. Урок 21 из 59.
Задание
ЛегкоСоздайте метод с именем <strong>processHashMap</strong>, который принимает один аргумент:
- HashMap с именем
<strong>products</strong>, где:- Ключи представляют названия продуктов (
String). - Значения представляют цены (
Double).
- Ключи представляют названия продуктов (
Необходимые операции
- Найдите продукт с самой высокой ценой.
- Если несколько продуктов имеют одинаковую самую высокую цену, верните любой из них.
- Если HashMap пуст, верните пустую строку (
"").
- Отфильтруйте продукты с ценой больше
<strong>50.00</strong>и сохраните их в новом 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