Melhor maneira de Iterar sobre um Dicionário em C#
-
Use
for
Loop para iterar sobre um dicionário emC#
-
Use o loop
foreach
para iterar em um dicionário emC#
-
Utilize o método
ParallelEnumerable.ForAll
para Iterate a Dictionary inC#
O dicionário em C# é uma coleção de pares de valores-chave. É algo semelhante ao dicionário de inglês onde a chave
representa uma palavra e o valor
é seu significado. Neste artigo, analisaremos diferentes maneiras de iterar um dicionário.
Para fins de representação, consideraremos a seguinte definição do objeto do Dicionário ao longo de todo o artigo.
Dictionary<int, string> sample_Dict = new Dictionary<int, string>();
Agora, vamos analisar alguns dos métodos que você pode utilizar para atravessar este dicionário.
Use for
Loop para iterar sobre um dicionário em C#
O método de loop é fácil e conciso, onde iteracionamos sequencialmente sobre o dicionário utilizando um índice.
using System;
using System.Collections.Generic;
public class Sample {
public static void Main() {
Dictionary<int, string> sample_Dict =
new Dictionary<int, string>() { { 0, "value_1" }, { 1, "value_2" }, { 2, "value_3" } };
for (int index = 0; index < sample_Dict.Count; index++)
System.Console.WriteLine(index + ":" + sample_Dict[index]);
}
}
Resultado:
0 : value_1 1 : value_2 2 : value_3
Como você notará, também especificamos a lista do inicializador enquanto definimos o objeto do Dicionário. Ao especificar a lista de inicializadores, certifique-se de que cada entrada na lista tenha uma chave única, caso contrário, ela levará à exceção tempo de execução.
Use o loop foreach
para iterar em um dicionário em C#
o loop foreach
é outra alternativa pela qual você pode optar.
using System;
using System.Collections.Generic;
public class Sample {
public static void Main() {
Dictionary<int, string> sample_Dict =
new Dictionary<int, string>() { { 0, "value_1" }, { 1, "value_2" }, { 2, "value_3" } };
foreach (var entry in sample_Dict) System.Console.WriteLine(entry.Key + ":" + entry.Value);
}
}
Resultado:
0 : value_1 1 : value_2 2 : value_3
O método acima pode ser considerado uma implementação preguiçosa do loop foreach
. Também podemos implementar o método foreach
utilizando a estrutura KeyValuePair<TKey,TValue>
.
using System;
using System.Collections.Generic;
public class Sample {
public static void Main() {
Dictionary<int, string> sample_Dict =
new Dictionary<int, string>() { { 0, "value_1" }, { 1, "value_2" }, { 2, "value_3" } };
foreach (var entry in sample_Dict) System.Console.WriteLine(entry.Key + ":" + entry.Value);
}
}
Resultado:
0 : value_1 1 : value_2 2 : value_3
Utilize o método ParallelEnumerable.ForAll
para Iterate a Dictionary in C#
Este método vem a calhar quando se está fazendo iterações sobre grandes dicionários, pois incorpora o processamento multithreading para cada par de valores-chave no dicionário.
using System;
using System.Linq;
using System.Collections.Generic;
public class Sample {
public static void Main() {
/*User Code Here*/
Dictionary<int, string> sample_Dict =
new Dictionary<int, string>() { { 0, "value_1" }, { 1, "value_2" }, { 2, "value_3" } };
sample_Dict.AsParallel().ForAll(entry => Console.WriteLine(entry.Key + ":" + entry.Value));
}
}
Resultado:
0 : value_1 1 : value_2 2 : value_3
Ao analisar o melhor método dentre os mencionados acima, precisamos considerar certos parâmetros e o resultado seria circunstancial. O método de looping é conciso e eficaz, mas ao iterar grandes dicionários, torna-se impraticável em termos de complexidade de tempo de execução.
É aqui que entra o método ParallelEnumerable.ForAll
, pois permite a execução simultânea economizando tempo crucial, o que pode ser um fator importante ao projetar determinadas aplicações.