Listas
As listas são uma ferramenta incrivelmente útil para armazenar dados diversos. Nós podemos pensar em uma lista como sendo um vetor capaz de armazenar quaisquer tipos de dados, mas com uma enorme vantagem: quando criamos um vetor, devemos informar o seu tamanho, mas nas listas isso não é necessário. Ela pode aumentar ou diminuir de tamanho automaticamente de acordo com a inserção ou remoção de conteúdo. Vamos começar com um exemplo bem simples de uma lista para armazenar números inteiros.
Add
Agora vejam como é simples inserir valores nela. Colocarei a seguinte sequência de números, cada um em uma posição: 16, 5, 23, 19.
Para fazer a utilização desses valores, o procedimento é semelhante. Vou exibir no Console o valor da segunda posição (sempre lembrando que começamos a contar a partir da posição zero).
Vou inserir o seguinte comando para a exibição dessa posição:
Console.WriteLine(minhaLista[2]);
Console.ReadLine();
Vejamos como será a saída:
A posição 2 solicitada é a terceira inserida, portanto a que contém o valor 23.
Contando os itens de uma Lista
Existe um comando extremamente útil que nos retorna um número inteiro contendo a quantidade de itens em uma Lista. Trata-se do Count. Ele pode ser útil, por exemplo, dentro de um comando For, para que saibamos quando determinar a condição de parada. Vejam como ficaria na prática:
A saída será:
Conseguimos imprimir na tela todos os objetos contidos em minhaLista.
Removendo um item da Lista
Para remover um objeto presente em uma Lista é muito simples. Só precisamos substituir o comando Add pelo Remove e passar como parâmetro o item que desejamos excluir.
A saída agora ficará:
Notem que na segunda impressão da lista, após o espaço em branco, o número 5 não está mais presente, o que significa que a remoção aconteceu com sucesso.
Removendo itens de uma Lista através do índice
Outra forma de remover um item de uma Lista é através do seu índice. Isso é feito de maneira bastante semelhante ao processo exibido acima, mas no lugar de Remove usaremos o RemoveAt, passando como parâmetro o índice que desejamos remover.
Vejamos a saída.
Notem que na segunda exibição da Lista o número 16 não está mais presente.
Invertendo os itens de uma Lista
Outro comando interessante é o Reverse, que inverte totalmente uma lista. Vejam sua utilização abaixo:
A execução agora terá a seguinte saída:
Agora a ordem dos elementos está invertida.
Descobrindo a média aritmética dos itens de uma Lista numérica
Outro comando interessante das listas é o Average, que nos retorna a média aritmética dos elementos presentes. Vamos testá-lo.
Agora vamos verificar a saída e a impressão da variável média:
Aí está o cálculo correto realizado pela função.
Procurando itens em uma Lista
Até aqui vimos como inserir e remover objetos de uma Lista, invertê-la, calcular a média e, como próximo parâmetro, vamos ver como procurar um valor na lista, que é uma função de grande importância.
O comando responsável por isso é o Contains. Vejam como funciona:
No exemplo acima pedi ao Contains que procure o elemento 5 dentro da Lista. Esse elemento existe, portanto devemos receber true como retorno. Vejamos se isso acontece:
De fato a função retornou True, pois o elemento existe. Se não existisse receberíamos False como retorno.
Descobrindo a posição de um elemento em uma Lista
Além de saber se um elemento existe, pode ser importante saber em qual posição da Lista ele se encontra. Essa informação também é fácil de ser conseguida através do método IndexOf. Sua sintaxe é:
Vejamos a execução:
O programa retornou a posição 3, que é, de fato, o local em que o item 19 se encontra. Apenas para ilustrar, segue abaixo a execução de um código com um número inexistente na Lista:
Ordenando itens de uma Lista
Outra opção que pode ser interessante é ordenar os itens de uma Lista, seja para exibi-los, gravar num banco, enfim, não importa. Seja lá qual for sua razão, se precisar ordenar os itens, deverá fazê-lo utilizando o método Sort. Segue abaixo um exemplo:
Vejam a saída com a lista já ordenada:
Aí está nossa Lista corretamente ordenada.
A última importante observação que faço é que dei todos os exemplos com números inteiros, mas poderíamos ter criado listas com outros tipos, por exemplo com números double:
E como é possível perceber na imagem acima, o comando Sort também pode ser aplicado a esse tipo de dado sem qualquer problema. Abaixo temos a impressão da nossa lista do tipo double devidamente ordenada:
Agora vamos criar uma lista do tipo String:
Nossa lista agora será:
Armazenando objetos em uma Lista
Como deu para perceber, as listas aceitam diversos tipos de itens. É possível, inclusive, criar uma classe qualquer e armazenar as instâncias dessa classe em uma lista. Criarei uma classe "Aluno" como exemplo:
Agora adicionarei instâncias dessa classe em uma lista, da seguinte forma:
Dessa forma teremos uma lista contendo objetos do tipo "Aluno".
Bem, estas foram, na minha opinião, as mais importantes funções relacionadas às Listas, mas existe muito mais! Basta dar uma olhada no IntelliSense do Visual Studio para perceber que se pode fazer praticamente de tudo com listas. Elas são realmente úteis!