Menu
CoddyTech

Zusammenfassung - HashMap-Operationen

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

challenge icon

Aufgabe

Einfach

Erstelle eine Methode namens processHashMap, die ein Argument entgegennimmt:

  1. Eine HashMap namens products, wobei:
    • Schlüssel Produktnamen darstellen (String).
    • Werte Preise darstellen (Double).

Auszuführende Operationen

  1. Finde das Produkt mit dem höchsten Preis.
    • Wenn mehrere Produkte denselben höchsten Preis haben, gib ein beliebiges davon zurück.
    • Wenn die HashMap leer ist, gib eine leere Zeichenfolge zurück ("").
  2. Filtere Produkte mit einem Preis über 50.00 und speichere sie in einer neuen HashMap.
  3. Berechne den Durchschnittspreis 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 über 50.00 enthält.
"Average"Der Durchschnittspreis aller Produkte (Double).

Probier es selbst

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

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

        // Wandle den JSON-String in eine HashMap um
        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 Filtered-Map, um eine einheitliche Ausgabe sicherzustellen
        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

Übe selbstständig: Online-Java-Compiler