Como percorrer todos os valores numa Map?
sobes.tech IA
Resposta da IA
Existem várias formas de iterar sobre um Map em Java.
-
Utilização de
entrySet(): A forma mais versátil, devolve umSetde pares chave-valor (Map.Entry). Pode ser percorrido usando um iterador ou um ciclo for-each.// Utilização de for-each com entrySet() for (Map.Entry<String, Integer> entry : map.entrySet()) { String key = entry.getKey(); Integer value = entry.getValue(); // Processar chave e valor } -
Utilização de
keySet(): Devolve umSetde todas as chaves noMap. Depois, pode-se obter o valor correspondente a cada chave.// Utilização de for-each com keySet() for (String key : map.keySet()) { Integer value = map.get(key); // Processar chave e valor } -
Utilização de
values(): Devolve umaCollectionde todos os valores noMap. Este método é útil quando apenas os valores são necessários.// Utilização de for-each com values() for (Integer value : map.values()) { // Processar valor } -
Utilização de um iterador: Para
entrySet(),keySet()evalues(), pode-se usar um iterador.// Utilização de iterador com entrySet() Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, Integer> entry = iterator.next(); String key = entry.getKey(); Integer value = entry.getValue(); // Processar chave e valor } -
Utilização do Stream API (Java 8+): Abordagem mais moderna, que oferece ferramentas poderosas para processar dados.
// Percorrer usando forEach() e Stream com entrySet() map.entrySet().stream().forEach(entry -> { String key = entry.getKey(); Integer value = entry.getValue(); // Processar chave e valor }); // Percorrer usando forEach() e Stream com keySet() map.keySet().stream().forEach(key -> { Integer value = map.get(key); // Processar chave e valor });
A escolha do método depende da tarefa específica e das preferências. entrySet() costuma ser a mais eficiente, pois evita buscas duplas do valor pela chave (como acontece com keySet() e map.get()). A API Stream é conveniente para operações mais complexas.