Повторение - Операции 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.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);
// Отсортировать отфильтрованную карту для обеспечения согласованного вывода
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Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка слов