Menu
CoddyTech

Повторение - Операции HashMap

Часть раздела Логика и управление потоком путешествия по Java на Coddy. Урок 21 из 59.

challenge icon

Задание

Легко

Создай метод с именем processHashMap, который принимает один аргумент:

  1. HashMap с именем products, где:
    • Ключи представляют названия товаров (String).
    • Значения представляют цены (Double).

Выполняемые операции

  1. Найди товар с наибольшей ценой.
    • Если несколько товаров имеют одинаковую наибольшую цену, верни любой из них.
    • Если HashMap пуст, верни пустую строку ("").
  2. Отфильтруй товары с ценой больше 50.00 и сохрани их в новом HashMap.
  3. Вычисли среднюю цену всех товаров.
    • Если HashMap пуст, среднее значение должно быть равно 0.0.

Формат возвращаемого значения

Метод должен вернуть новый 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);
    }
}

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Java