Menu
Coddy logo textTech

Récapitulatif - Opérations HashMap

Fait partie de la section Logique & Flux du Journey Java de Coddy — leçon 21 sur 59.

challenge icon

Défi

Facile

Créez une méthode nommée <strong>processHashMap</strong> qui prend un argument :

  1. Une HashMap nommée <strong>products</strong> où :
    • Les clés représentent les noms des produits (String).
    • Les valeurs représentent les prix (Double).

Opérations à effectuer

  1. Trouvez le produit avec le prix le plus élevé.
    • Si plusieurs produits ont le même prix le plus élevé, retournez l'un d'eux.
    • Si la HashMap est vide, retournez une chaîne vide ("").
  2. Filtrez les produits qui ont un prix supérieur à <strong>50.00</strong> et stockez-les dans une nouvelle HashMap.
  3. Calculez le prix moyen de tous les produits.
    • Si la HashMap est vide, la moyenne doit être 0.0.

Format de retour

La méthode doit retourner une nouvelle HashMap avec les paires clé-valeur suivantes :

CléValeur
"Highest"Le nom du produit avec le prix le plus élevé (String).
"Filtered"Une HashMap (HashMap<String, Double>) contenant uniquement les produits avec des prix supérieurs à 50.00.
"Average"Le prix moyen de tous les produits (Double).

Essayez vous-même

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) {
        // Écrivez votre code ici
    }

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

        // Convertir la chaîne JSON en HashMap
        Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
        HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);

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

        // Trier la map Filtered pour assurer une sortie cohérente
        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);
    }
}

Toutes les leçons de Logique & Flux