La mejor manera de iterar sobre un diccionario
-
Usando el bucle
for
iterar sobre un Diccionario enC#
-
Usando el bucle
foreach
para iterar sobre un diccionario enC#
-
Usando el método
ParallelEnumerable.ForAll
para iterar un diccionario enC#
El diccionario en C# es una colección de pares clave-valor. Es algo similar al diccionario inglés donde la clave
representa una palabra y el valor
es su significado. En este artículo, veremos diferentes formas de iterar un diccionario.
Con fines de representación, consideraremos la siguiente definición del objeto del diccionario a lo largo del artículo.
Dictionary<int, string> sample_Dict = new Dictionary<int, string>();
Ahora, veamos algunos de los métodos que puedes usar para recorrer este diccionario.
Usando el bucle for
iterar sobre un Diccionario en C#
El método for
el bucle es fácil y conciso, donde iteramos secuencialmente sobre el diccionario usando un í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]);
}
}
Producción :
0:value_1
1:value_2
2:value_3
Como notarán, también hemos especificado la lista de inicialización al definir el objeto del diccionario. Mientras se especifica la lista inicializadora, asegúrese de que cada entrada de la lista tiene una clave única, de lo contrario, se producirá una excepción Run-time
.
Usando el bucle foreach
para iterar sobre un diccionario en C#
El looping
es otra alternativa a la que puedes 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);
}
}
Producción :
0:value_1
1:value_2
2:value_3
El método anterior puede ser considerado una implementación perezosa del bucle foreach
. También podemos implementar el método foreach
usando la estructura 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);
}
}
Producción :
0:value_1
1:value_2
2:value_3
Usando el método ParallelEnumerable.ForAll
para iterar un diccionario en C#
Este método resulta útil cuando se itera sobre grandes diccionarios, ya que incorpora un procesamiento multihilo para cada par de claves-valor del diccionario.
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));
}
}
Producción:
0 : value_1 1 : value_2 2 : value_3
Cuando se analiza el mejor método de los mencionados, necesitamos considerar ciertos parámetros y el resultado sería circunstancial. El método de bucle es conciso y efectivo pero cuando se itera en grandes diccionarios se vuelve poco práctico en términos de complejidad de tiempo de ejecución.
Aquí es donde entra en juego el método ParallelEnumerable.ForAll
, ya que permite la ejecución simultánea ahorrando un tiempo crucial, que puede ser un factor importante a la hora de diseñar ciertas aplicaciones.