Collections

Wilson Santos
Nov 2 · 4 min read

De vez em quando meus coleguinhas me perguntam , virso qual collection eu uso para fazer isso , qual que usa pra fazer aquilo , ai achei um PPT que eu tinha criado na minha época de “Bras Figueiredo” , estamos falando ai de .net framework 2.0 e é impressionante como esse tipo de coisa continua atual. Isso acontece por que estamos falando de conceitos muito basilares da área da computação, collection, são abstrações de conceitos aprendidos na área de Estrutura de dados.

O que São

  • As coleções são grupos de objetos similarmente iguais.
  • São similares aos arrays mas, com regras de negocio
    próprias podendo se comportar como filas ou pilhas etc.
  • Podem ser genéricas ou não
  • Não precisam de dimensionamento prévio
  • São a base do LINQ

Onde estão ?

No .NET Framework Class Library temos um Namespace específico qual contem diversas coleções para serem utilizadas em nossas aplicações. Este
Namespace chama-se System.Collections.

Dentro deste Namespace, encontramos várias classes e Interfaces para a criação dos mais diversos tipos de coleções

As coleções estão definidas em três categorias:

  • Coleções Ordenadas
  • Coleções Indexadas
  • Coleções baseadas em uma “chave-e-valor”

Coleções Ordenadas: São coleções que são distinguidas apenas pela ordem de inserção e assim controla a ordem em que os objetos podem ser recuperados da coleção, Stack , Queue são exemplos deste tipo de coleção.

Coleções Indexadas: São coleções que são distinguidas pelo fato de que seus
valores e/ou objetos podem ser recuperados/acessados através de um índice
numérico (baseado em 0 (zero)). System.Collections.ArrayList é um exemplo
deste tipo de coleção.

Coleções “Chave-e-Valor”: Como o próprio tipo diz, é uma coleção que
contém uma chave associado a algum tipo. Seus índices são classificados no
valor da chave e podem ser recuperados na ordem classificado pela
enumeração. System.Collections.HashTable é um exemplo deste tipo de
coleção.

Exemplos de Collections

  • ArrayList
  • Queue (FIFO FILA)
  • Stack(LIFO PILHA)
  • HybridDictionary
  • ListDictionary
  • Hashtable
  • StringCollection
  • NameValueCollection
  • SortedList
  • List<T>
  • Queue <T>
  • Stack<T>
  • Dictionary<Tkey,Tvalue>
  • HashSet<T>

ArrayList

recebe diferentes tipos
removendo itens , e adicionando vários de uma só vez
a desvantagem desse tipo de lista é justamente sua flexibilidade , pois é comum precisarmos fazer casts para obter os dados e usa-los conforme seus tipos , isso gear processo de boxing e unboxing o que aumenta o custo de utilização desse tipo de lista

Queue FIFO FILA

Adiciona/ tira da fila / consulta sem tirar

Stack LIFO PILHA

Adiciona/ tira da fila / consulta sem tirar

Collections Chave Valor

Esse tipo permite a adição de dois elementos básicos uma chave única e um valor facilitando assim a busca de um item. Para iterar com seus itens precisamos de:

  • DictionaryEntry
  • KeyValuePair<Tkey,Tvalue>

Hashtable

Hashtable Ordena e Aceita keys de diferentes tipos

acesso pela chave / verificação de existência

ListDictionary

Essa classe funciona da mesma forma que a classe Hashtable.

A diferença esta na performance para até 10 elementos a classe ListDictionary é muito rápida ,para mais elementos ela perde desempenho, resumindo para até 10 elementos utilize a classe ListDictionary e para mais de 10 elementos utilize a classe Hashtable.

HybridDictionary

Essa classe muito interessante porque ela usa estruturas diferentes conforme a quantidade de elementos na coleção até 10 elementos é utilizado a classe ListDictionary, para mais de 10 elementos a classe Hashtable é utilizada.

Assim o melhor classe é sempre utilizada.

StringCollection

É uma representação da classe ArrayList com a diferença de receber String como elementos

NameValueCollection

Representa uma coleção de Teclas associado String e String valores que podem ser acessados com a chave ou com o índice;

LinkedList

fornecer acesso muito rápida inserção ou exclusão de um membro da
lista.

Cada membro de uma lista ligada contém um ponteiro para o
próximo na lista para inserir um membro na posição i:

CollectionsUtil

Com essa classe é possível criar coleções case-insensitive para as classes Hashtable e SortedList.

Através dos métodos estáticos:

  • CreateCaseInsensitiveHashtable
  • CreateCaseInsensitiveSortedList respectivamente.

Cria um objeto do tipo Hashtable com
chave case-insensitive

Cria um objeto do tipo SortedList com
chave case-insensitive

Bem é isso ai, esse é das antigas , mas o impressionante é que essas listas nunca vão morrer por que estamos falando de implementações de um dos conceitos mais utilizados da ciência da computação.

Wilson Santos

Written by

Nos últimos 15 anos, venho desenvolvendo , aperfeiçoando e integrando sistemas, sou apaixonado por desenvolver e ensinar, nem tanto por escrever!.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade