Melhor maneira de Iterar sobre um Dicionário em C#
-
Use
for
Loop para iterar sobre um dicionário em C -
Use o loop
foreach
para iterar em um dicionário em C -
Utilize o método
ParallelEnumerable.ForAll
para Iterate a Dictionary in C
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.