Sobes.tech
Junior

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 um Set de 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 um Set de todas as chaves no Map. 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 uma Collection de todos os valores no Map. 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() e values(), 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.