Resumen - Operaciones de HashMap
Parte de la sección Lógica y Flujo del Journey de Java de Coddy — lección 21 de 59.
Desafío
FácilCrea un método llamado <strong>processHashMap</strong> que toma un argumento:
- Un HashMap llamado
<strong>products</strong>donde:- Claves representan nombres de productos (
String). - Valores representan precios (
Double).
- Claves representan nombres de productos (
Operaciones a Realizar
- Encuentra el producto con el precio más alto.
- Si múltiples productos tienen el mismo precio más alto, devuelve cualquiera de ellos.
- Si el HashMap está vacío, devuelve una cadena vacía (
"").
- Filtra los productos que tienen un precio mayor que
<strong>50.00</strong>y almacénalos en un nuevo HashMap. - Calcula el precio promedio de todos los productos.
- Si el HashMap está vacío, el promedio debe ser
0.0.
- Si el HashMap está vacío, el promedio debe ser
Formato de Retorno
El método debe devolver un nuevo HashMap con las siguientes pares clave-valor:
| Clave | Valor |
|---|---|
"Highest" | El nombre del producto con el precio más alto (String). |
"Filtered" | Un HashMap (HashMap<String, Double>) que contiene solo productos con precios mayores que 50.00. |
"Average" | El precio promedio de todos los productos (Double). |
Pruébalo tú mismo
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) {
// Escribe tu código aquí
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String productsString = scanner.nextLine();
// Convertir cadena JSON a HashMap
Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);
HashMap<String, Object> result = processHashMap(products);
// Ordenar el mapa Filtered para asegurar salida 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 las lecciones de Lógica y Flujo
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de Palabras