CodeGym /Blogue Java /Random-PT /Como iterar um mapa em Java
John Squirrels
Nível 41
San Francisco

Como iterar um mapa em Java

Publicado no grupo Random-PT
Neste post, aprenderemos diferentes maneiras de iterar um mapa em Java. Algumas de suas formas comuns e como usá-las com a ajuda de exemplos. Antes de começar, presumimos que você entenda interfaces e mapas em Java. No entanto, aqui está uma rápida recapitulação para você.

O que é um mapa em Java?

Existem muitas interpretações disso, mas vamos simplesmente colocar desta forma.
“Map é uma interface em Java, usada para armazenar dados na forma de pares chave-valor.”
Se você está pensando sobre para que servem os mapas? Ou quando são necessários? Existem muitas situações na vida real em que precisamos armazenar dados em pares chave-valor. Por exemplo, todas as palavras correspondentes a uma única letra em um dicionário podem ser armazenadas na forma de um mapa em Java.
k Kite, King, Korea, Knight,..., etc.
eu Lava, Vida, Luz, Amor, Líbano,..., etc.
Além disso, você pode dar uma olhada nos exemplos a seguir para entender isso melhor.
Chave Valor
CPF Membros da família
Nome da classe carteiras de estudante
Nome da área CEP
Bloco de área Números de casa

Por que precisamos iterar por meio de um mapa?

Precisamos percorrer ou iterar um mapa para acessar, modificar ou remover dados. Vamos explorar algumas das opções que temos.

Quais são algumas maneiras comuns de iterar um mapa em Java?

Embora existam muitas maneiras de percorrer um mapa. No entanto, vamos nos concentrar nas maneiras mais eficientes e simples.
  1. O método ForEach Loop
  2. O método iteradores
Por favor, encontre a implementação de ambos os métodos abaixo.

Usando o método Foreach Loop

Exemplo


import java.util.Map;
import java.util.HashMap;

public class ForEachDemo {

	public static void main(String[] args) {

		Map<String, String> businessDays = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		businessDays.put("1", "Monday");
		businessDays.put("2", "Tuesday");
		businessDays.put("3", "Wednesday");
		businessDays.put("4", "Thursday");
		businessDays.put("5", "Friday");

		// Iterating over the Map.entrySet() using map.forEach
		for (Map.Entry<String, String> entry : businessDays.entrySet()) 
		{
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue()); 
		}
	}
}

Saída

chave = 1, valor = segunda-feira chave = 2, valor = terça-feira chave = 3, valor = quarta-feira chave = 4, valor = quinta-feira chave = 5, valor = sexta-feira

Explicação

Neste exemplo, usamos o loop foreach para iterar no mapa. Ao usar o loop for-each, obtemos um entrySet() que fornece uma “visualização” automatizada dos dados no mapa, na forma de pares chave-valor. Cada entrySet contém uma chave e os valores correspondentes. Onde você pode usar todos os métodos de Map.Entry<chave, valor> de acordo com seus requisitos. Aqui, usamos apenas getKey() e getValue() para exibir os dados no console. Como exercício, você pode explorar o restante dos métodos para fortalecer seu domínio desse conceito.

Usando o método Iteradores

Exemplo


import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class MapIterator {

	public static void main(String[] args) {

		Map<String, String> monthsInAYear = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		monthsInAYear.put("1", "January");
		monthsInAYear.put("2", "February");
		monthsInAYear.put("3", "March");
		monthsInAYear.put("4", "April");
		monthsInAYear.put("5", "May");
		monthsInAYear.put("6", "June");
		monthsInAYear.put("7", "July");
		monthsInAYear.put("8", "August");
		monthsInAYear.put("9", "September");
		monthsInAYear.put("10", "October");
		monthsInAYear.put("11", "November");
		monthsInAYear.put("12", "December");

		// iterate map / traverse the map using using iterator
		Iterator<Map.Entry<String, String>> iterator = monthsInAYear.entrySet().iterator();

		while (iterator.hasNext()) 
		{
			// check if next entry exists in the map
			Map.Entry<String, String> entry = iterator.next(); 
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());

		}
	}
}

Saída

chave = 11, valor = chave de novembro = 1, valor = chave de janeiro = 12, valor = chave de dezembro = 2, valor = chave de fevereiro = 3, valor = chave de março = 4, valor = chave de abril = 5, valor = chave de maio = 6, valor = chave de junho = 7, valor = chave de julho = 8, valor = chave de agosto = 9, valor = chave de setembro = 10, valor = outubro

Explicação

Neste exemplo, criamos um iterador explícito para percorrer / iterar sobre o mapa. Primeiro, você precisa importar a classe do iterador e, em seguida, obter o iterador para o entrySet. Agora atravesse o mapa enquanto verifica a próxima entidade que existe no mapa. Ai está! Sua travessia está completa, assim.

O loop Foreach é melhor que o método dos iteradores?

Não importa qual método você usa para percorrer um mapa, desde que ele faça o trabalho para você. Em termos de desempenho, tanto o loop for-each quanto os iteradores têm a mesma complexidade de tempo . Portanto, nenhum é melhor que o outro, depende do que você precisa usar e quando.

Qual é a diferença entre os dois métodos?

O loop for-each não permite atualizar/modificar os dados no mapa. Pelo contrário, você pode modificar facilmente os dados usando iteradores. A classe iterators facilita você fornecendo implementação para editar/remover os dados no mapa. Ao contrário, se você tentar editar/excluir dados do mapa usando o loop for-each, ele lançará uma ConcurrentModificationException . A razão para isso é que o loop for-each cria implicitamente um iterador, que não é exposto ao usuário. Portanto, você não tem acesso para modificar ou excluir nenhum dado.

Qual método de passagem usar e quando?

Se você não tem certeza se deve usar o for-each ou os iteradores para iterar seu mapa, então você pode seguir as seguintes sugestões.
  • Use o iterador se precisar modificar o mapa.
  • Use o loop for-each se tiver loops aninhados (para evitar complexidade).

Conclusão

Ao final do post, esperamos que você tenha aprendido como iterar o mapa em Java. Você é encorajado a praticá-los e também a experimentar outros métodos de passagem. Sinta-se à vontade para voltar ou postar perguntas sempre que se sentir preso. Até lá, bom aprendizado!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION