Encontrar el valor máximo utilizando iteración
Una forma de encontrar el valor máximo en un Map es iterando a través de todas las entradas y llevando un registro del valor máximo encontrado hasta el momento. Este enfoque funciona con cualquier implementación de Map.
¿Qué es Map.Entry?
Map.Entry
es una interfaz que representa un par clave-valor en un Map. Proporciona métodos para acceder tanto a la clave como al valor del par.
Implementar el enfoque iterativo
Vamos a modificar nuestro programa de Java para encontrar el precio máximo del curso utilizando iteración:
-
Abre el archivo MaxValueInMap.java
en el WebIDE
-
Reemplaza el código existente con el siguiente:
import java.util.*;
public class MaxValueInMap {
public static void main(String args[]) {
// Create a HashMap to store course prices
Map<String, Integer> coursePrices = new HashMap<>();
// Variable to store the entry with maximum price
Map.Entry<String, Integer> maxEntry = null;
// Add key-value pairs to the map
coursePrices.put("Java", 5000);
coursePrices.put("Python", 3000);
coursePrices.put("CPP", 4000);
coursePrices.put("Android", 8000);
System.out.println("Course price map: " + coursePrices);
// Iterate through each entry in the map
for (Map.Entry<String, Integer> entry : coursePrices.entrySet()) {
// If maxEntry is null OR current entry's value is greater than maxEntry's value
if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) {
maxEntry = entry;
}
}
// Print the maximum price and its corresponding course
System.out.println("Course with maximum price: " + maxEntry.getKey());
System.out.println("Maximum price: " + maxEntry.getValue());
}
}
-
Guarda el archivo
-
Ejecuta el programa con:
javac MaxValueInMap.java && java MaxValueInMap
Deberías ver una salida similar a:
Course price map: {Java=5000, CPP=4000, Android=8000, Python=3000}
Course with maximum price: Android
Maximum price: 8000
Cómo funciona la iteración
- Creamos una variable
maxEntry
inicialmente establecida en null
- Iteramos a través de cada entrada en el mapa utilizando el método
entrySet()
- Para cada entrada, comparamos su valor con el valor máximo actual
- Si la entrada actual tiene un valor mayor, o si
maxEntry
sigue siendo null
, actualizamos maxEntry
- Después de completar la iteración,
maxEntry
contiene la entrada con el valor máximo
Este enfoque es útil cuando necesitas tanto la clave como el valor de la entrada máxima.