Menu
Coddy logo textTech

Resumo - Operações do HashMap

Parte da seção Lógica e Fluxo do Journey de Java da Coddy — lição 21 de 59.

challenge icon

Desafio

Fácil

Crie um método chamado <strong>processHashMap</strong> que recebe um argumento:

  1. Um HashMap chamado <strong>products</strong> onde:
    • Chaves representam nomes de produtos (String).
    • Valores representam preços (Double).

Operações a Realizar

  1. Encontre o produto com o preço mais alto.
    • Se múltiplos produtos tiverem o mesmo preço mais alto, retorne qualquer um deles.
    • Se o HashMap estiver vazio, retorne uma string vazia ("").
  2. Filtre produtos que tenham preço maior que <strong>50.00</strong> e armazene-os em um novo HashMap.
  3. Calcule o preço médio de todos os produtos.
    • Se o HashMap estiver vazio, a média deve ser 0.0.

Formato de Retorno

O método deve retornar um novo HashMap com os seguintes pares chave-valor:

ChaveValor
"Highest"O nome do produto com o preço mais alto (String).
"Filtered"Um HashMap (HashMap<String, Double>) contendo apenas produtos com preços maiores que 50.00.
"Average"O preço médio de todos os produtos (Double).

Experimente você mesmo

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) {
        // Escreva seu código aqui
    }

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

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

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

        // Ordena o mapa Filtered para garantir saída consistente
        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);
    }
}

Todas as lições de Lógica e Fluxo