Menu
Coddy logo textTech

Riepilogo - Operazioni con HashMap

Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 21 di 59.

challenge icon

Sfida

Facile

Crea un metodo chiamato <strong>processHashMap</strong> che accetta un argomento:

  1. Una HashMap chiamata <strong>products</strong> in cui:
    • Le chiavi rappresentano i nomi dei prodotti (String).
    • I valori rappresentano i prezzi (Double).

Operazioni da eseguire

  1. Trova il prodotto con il prezzo più alto.
    • Se più prodotti hanno lo stesso prezzo più alto, restituiscine uno qualsiasi.
    • Se la HashMap è vuota, restituisci una stringa vuota ("").
  2. Filtra i prodotti con un prezzo maggiore di <strong>50.00</strong> e inseriscili in una nuova HashMap.
  3. Calcola il prezzo medio di tutti i prodotti.
    • Se la HashMap è vuota, la media deve essere 0.0.

Formato del valore restituito

Il metodo deve restituire una nuova HashMap con le seguenti coppie chiave-valore:

ChiaveValore
"Highest"Il nome del prodotto con il prezzo più alto (String).
"Filtered"Una HashMap (HashMap<String, Double>) contenente solo i prodotti con prezzi maggiori di 50.00.
"Average"Il prezzo medio di tutti i prodotti (Double).

Provalo tu

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) {
        // Scrivi il tuo codice qui
    }

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

        // Converti la stringa JSON in HashMap
        Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
        HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);

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

        // Ordina la mappa Filtered per garantire un output coerente
        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);
    }
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Java online