Menu
Coddy logo textTech

Zusammenfassung - HashMap-Operationen

Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy — Lektion 21 von 59.

challenge icon

Aufgabe

Einfach

Erstellen Sie eine Methode namens <strong>processHashMap</strong>, die ein Argument nimmt:

  1. Eine HashMap namens <strong>products</strong>, wobei:
    • Schlüssel stellen Produktnamen dar (String).
    • Werte stellen Preise dar (Double).

Durchzuführende Operationen

  1. Finden Sie das Produkt mit dem höchsten Preis.
    • Wenn mehrere Produkte denselben höchsten Preis haben, geben Sie eines davon zurück.
    • Wenn die HashMap leer ist, geben Sie einen leeren String ("") zurück.
  2. Filtern Sie Produkte, die einen Preis größer als <strong>50.00</strong> haben, und speichern Sie sie in einer neuen HashMap.
  3. Berechnen Sie den durchschnittlichen Preis aller Produkte.
    • Wenn die HashMap leer ist, sollte der Durchschnitt 0.0 betragen.

Rückgabeformat

Die Methode sollte eine neue HashMap mit den folgenden Schlüssel-Wert-Paaren zurückgeben:

SchlüsselWert
"Highest"Der Name des Produkts mit dem höchsten Preis (String).
"Filtered"Eine HashMap (HashMap<String, Double>), die nur Produkte mit Preisen größer als 50.00 enthält.
"Average"Der durchschnittliche Preis aller Produkte (Double).

Probier es selbst

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) {
        // Schreibe deinen Code hier
    }

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

        // Konvertiere JSON-String zu HashMap
        Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
        HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);

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

        // Sortiere die gefilterte Map, um konsistente Ausgabe zu gewährleisten
        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);
    }
}

Alle Lektionen in Logik & Ablauf