Menu
Coddy logo textTech

Powtórka — operacje na HashMap

Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 21 z 59.

challenge icon

Wyzwanie

Łatwy

Utwórz metodę o nazwie <strong>processHashMap</strong>, która przyjmuje jeden argument:

  1. HashMap o nazwie <strong>products</strong>, w której:
    • Klucze reprezentują nazwy produktów (String).
    • Wartości reprezentują ceny (Double).

Operacje do wykonania

  1. Znajdź produkt o najwyższej cenie.
    • Jeśli kilka produktów ma tę samą najwyższą cenę, zwróć dowolny z nich.
    • Jeśli HashMap jest pusta, zwróć pusty ciąg znaków ("").
  2. Odfiltruj produkty, których cena jest większa niż <strong>50.00</strong> i umieść je w nowej HashMap.
  3. Oblicz średnią cenę wszystkich produktów.
    • Jeśli HashMap jest pusta, średnia powinna wynosić 0.0.

Format zwracanej wartości

Metoda powinna zwrócić nową HashMap z następującymi parami klucz-wartość:

KluczWartość
"Highest"Nazwa produktu o najwyższej cenie (String).
"Filtered"HashMap (HashMap<String, Double>) zawierająca wyłącznie produkty, których ceny są większe niż 50.00.
"Average"Średnia cena wszystkich produktów (Double).

Spróbuj swoich sił

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) {
        // Wpisz tutaj swój kod
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String productsString = scanner.nextLine();

        // Przekonwertuj ciąg JSON na HashMap
        Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
        HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);

        HashMap<String, Object> result = processHashMap(products);

        // Posortuj mapę Filtered, aby zapewnić spójny wynik
        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);
    }
}

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Java online