Encontrando o Valor Máximo Usando Iteração
Uma maneira de encontrar o valor máximo em um Map é iterar por todas as entradas e manter o controle do valor máximo encontrado até o momento. Essa abordagem funciona com qualquer implementação de Map.
O que é Map.Entry?
Map.Entry é uma interface que representa um par chave-valor em um Map. Ela fornece métodos para acessar tanto a chave quanto o valor no par.
Implementando a Abordagem Iterativa
Vamos modificar nosso programa Java para encontrar o preço máximo do curso usando iteração:
-
Abra o arquivo MaxValueInMap.java no WebIDE
-
Substitua o código existente pelo seguinte:
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());
}
}
-
Salve o arquivo
-
Execute o programa com:
javac MaxValueInMap.java && java MaxValueInMap
Você deve ver uma saída semelhante a:
Course price map: {Java=5000, CPP=4000, Android=8000, Python=3000}
Course with maximum price: Android
Maximum price: 8000
Como a Iteração Funciona
- Criamos uma variável
maxEntry inicialmente definida como null
- Iteramos por cada entrada no
Map usando o método entrySet()
- Para cada entrada, comparamos seu valor com o valor máximo atual
- Se a entrada atual tiver um valor maior, ou se
maxEntry ainda for null, atualizamos maxEntry
- Após concluir a iteração,
maxEntry contém a entrada com o valor máximo
Essa abordagem é útil quando você precisa tanto da chave quanto do valor da entrada máxima.