ArrayList, Hashtable e BitArray em C#

Veja nesse artigo uma descrição sobre as classes ArrayList, Hashtable e BitArray na linguagem C#.


Guia do artigo:

ArrayList

A classe ArrayList é uma solução alternativa ao uso de arrays em .NET, tendo como principal diferencial a possibilidade de se expandir quando se adiciona novos elementos, não sendo necessário definir sua capacidade suportada na inicialização. De forma semelhante, quando um elemento é removido, o tamanho da lista é reduzido, poupando memória.

Esta classe funciona como uma lista de objetos (System.Object), ou seja, pode-se adicionar elementos de qualquer tipo a um ArrayList e, mesmo assim, é possível localizar itens, ordenar a lista, identificar quais elementos são de determinado tipo, entre outras funcionalidades.

Vejamos os principais métodos da classe:

É fácil perceber que se torna muito mais prático trabalhar com ArrayList em comparação com arrays, principalmente pelo fato de não precisar se preocupar com o tamanho da lista e o posicionamento dos elementos.

Hashtable

A classe Hashtable localizada no namespace System.Collections, como o próprio namespace sugere, é uma coleção de objetos onde cada elemento é composto por uma chave e um valor. Assim como a classe ArrayList, o Hashtable é flexível, ou seja, pode-se adicionar objetos de qualquer tipo (pois é uma coleção de object) e seu tamanho se adapta à quantidade de itens que contém, expandindo e contraindo suas dimensões.

Os elementos podem ser acessados pela respectiva chave e essa chave deve ser única para cada item, facilitando a localização de um objeto específico. Em comparação com o acesso aos elementos de um array, o Hashtable adapta-se mais facilmente a diversas situações, pois a chave não necessariamente é um número, pelo contrário, trata-se de um object. Por exemplo, podemos usar um Hashtable para representar um determinado objeto, quando não é preciso criar um struct ou uma classe para isso. Vejamos a Listagem 1 onde usamos uma coleção desse tipo para representar as configurações de um sistema, armazenando informações de vários tipos diferentes.

Como foi dito, as chaves são valores únicos. Ao tentar inserir uma chave duplicada, é gerada uma exceção do tipo ArgumentException, informando que a chave que se está tentando inserir já existe.

Listagem 1: Exemplo de utilização do Hashtable.
Hashtable config = new Hashtable(); //Valor do tipo Int32 config[“VERSAO”] = 1; //Valor do tipo String config[“DIRETORIO”] = “C:\\Sistema”; //Valor do tipo DateTime config[“VALIDADE”] = DateTime.Today.AddMonths(1);

Principais propriedades

Principais métodos

BitArray

A classe BitArray, como o nome sugere, é uma coleção de bits, que porém são tratados como bool. Ou seja, os elementos possuem valor true se o respectivo bit vale 1, ou false se o bit vale 0.

De modo geral, o BitArray funciona como um vetor de bool (bool[]), a principal diferença é a possibilidade de inverter todos os valores de uma única vez e comparar duas listas (comparando cada elemento e retornando um BitArray com os resultados).

Principais propriedades

Principais métodos

As demais operações como Clone, AsQueryable e CopyTo funcionam da mesma forma que nas demais coleções.

Conclusão

Ficamos por aqui com esse artigo sobre as classes ArrayList, Hashtable e BitArray na linguagem C#, caso tenham alguma dúvida podem ficar a vontade em me perguntar nos comentários.

Com o conteúdo desse artigo eu acredito que seja possível qualquer pessoa começar a entender melhor o funcionamento de classes em C#.

Confira também

Artigos relacionados