C# - Acessando dados de um dicionário ordenado - OrderedDictionary
Neste artigo vou mostrar como podemos acessar dados de um dicionário ordenado usando a classe OrderedDictionary. |
Antes de começar vamos lembrar que um Dictionary representa uma coleção de chaves e valores.
Você conhece a classe OrderedDictionary ?
O que ela tem de diferente em relação a Dictionary ?
Bem, a classe OrderedDictionary representa uma coleção de pares chave/valor que são acessíveis por chave ou índice.
Percebeu a diferença ?
Usando um OrderedDictionary, você pode executar ações específicas em um índice numérico na coleção, ou você pode usar o estilo de entrada do dicionário percorrendo a coleção. Ai esta o diferencial desta coleção.
Para ter acesso a esse recurso vamos precisar usar o namespace: System.Collections.Specialized
Se você precisar retornar dados usando um ICollection vai precisar também usar o namespace : System.Collections
Tudo bem, mas mostre-me o código...
Criando uma solução no VS 2017 usando o template Visual C# -> Windows Classic Desktop -> Console App ;
Inclua o código abaixo no método Main()
using System;
using System.Collections;
using System.Collections.Specialized;
using static System.Console;
namespace C_OrderedDictionary
{
class Program
{
static void Main(string[] args)
{
OrderedDictionary times = new OrderedDictionary();
times.Add("Pontos", "Time");
times.Add("59", "Corintians");
times.Add("53", "Santos");
times.Add("50", "Grêmio");
times.Add("47", "Cruzeiro");
//----------------------------------------
// Referencia aos valores ao estilo Array
WriteLine("Acesso ao estilo Array");
for (int i = 0; i < times.Count; i++)
{
var item = (string)times[i];
WriteLine(item);
}
ReadKey();
//----------------------------------------------
// Referencia chave e valores ao estilo Dictionary
WriteLine("Acesso usando o estilo Dictionary");
foreach (DictionaryEntry time in times)
{
Console.WriteLine(time.Key);
Console.WriteLine(time.Value);
}
ReadKey();
//-----------------------------------------
// Acessando chaves e valores usando uma coleção ICollection
WriteLine("Acesso usando uma coleção ICollection");
ICollection chaveColecao = times.Keys;
ICollection valorColecao = times.Values;
String[] mChaves = new String[times.Count];
String[] mValores = new String[times.Count];
chaveColecao.CopyTo(mChaves, 0);
valorColecao.CopyTo(mValores, 0);
for (int i = 0; i < times.Count; i++)
{
WriteLine("chave: " + mChaves[i]);
WriteLine("Valor: " + mValores[i]);
}
ReadKey();
}
}
}
|
Acessamos as informações no dicionário ordenado times usando diferentes abordagens.
Na primeira usamos um laço for/next e um índice para retornar cada objeto armazenado na coleção. Este método será o mais rápido para um coleção de dados muito grande.
Na segunda usamos um laço foreach e usamos DictionayEntry que define um pár chave/valor do tipo Dictionary que pode ser recuperado.
Lembrando que estrutura DictionaryEntry é usada com qualquer objeto que implemente a interface IDictionary, pois tais objetos são coleções de pares chave/valor. Assim, quando você enumera um objeto IDictionary com foreach, os pares chave/valor são retornados para a estrutura DictionaryEntry e podem ser recuperados usando as propriedades Key e Value.
Na terceira usamos uma coleção do tipo ICollection que obtém as chaves e os valores e os copia para coleções de strings que são acessadas usando for/next.
Concluimos que se você precisa o poder de uma coleção e a simplicidade de acesso de um índice numérico a coleção OrderdeDictionary é uma ótima opção.
(Disse Jesus)
O meu mandamento é este: Que vos ameis
uns aos outros, assim como eu vos amei.
João 15:12
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Escolhendo a coleção correta para sua necessidade - Macoratti.net