Aprenda a gerenciar coleções de dados usando o tipo de lista genérica
Este tutorial ensina C# interativamente, usando seu navegador para escrever código C# e ver os resultados da compilação e execução do código. Ele contém uma série de lições que criam, modificam e exploram coleções e matrizes.
Gorjeta
Para colar um trecho de código dentro do modo de foco, você deve usar o atalho de teclado (Ctrl + v ou cmd + v).
Criar listas
Execute o código seguinte na janela interativa. Selecione o botão Inserir modo de foco. Em seguida, digite o seguinte bloco de código na janela interativa (substitua <name>
pelo seu nome) e selecione Executar:
var names = new List<string> { "<name>", "Ana", "Felipe" };
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Se você estiver executando isso em seu ambiente, você deve seguir as instruções para a versão local.
Você criou uma lista de cadeias de caracteres, adicionou três nomes a essa lista e imprimiu os nomes em todos os CAPS. Você está usando conceitos que aprendeu em tutoriais anteriores para percorrer a lista.
O código para exibir nomes usa o recurso de interpolação de cadeia de caracteres. Ao preceder um com o $
caractere, você pode incorporar o string
código C# na declaração de cadeia de caracteres. A cadeia de caracteres real substitui esse código C# pelo valor que ele gera. Neste exemplo, ele substitui o {name.ToUpper()}
com cada nome, convertido em letras maiúsculas, porque você chamou o String.ToUpper método.
Vamos continuar explorando.
Modificar o conteúdo da lista
A coleção que você criou usa o List<T> tipo. Este tipo armazena sequências de elementos. Você especifica o tipo dos elementos entre os colchetes angulares.
Um aspeto importante desse List<T> tipo é que ele pode crescer ou encolher, permitindo que você adicione ou remova elementos. Você pode ver os resultados modificando o conteúdo depois de exibir seu conteúdo. Adicione o seguinte código abaixo do código que você já escreveu (abaixo do loop que imprime o conteúdo):
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Você adicionou mais dois nomes ao final da lista. Você também removeu um. A saída deste bloco de código mostra o conteúdo inicial e, em seguida, imprime uma linha em branco e o novo conteúdo.
O List<T> permite que você faça referência a itens individuais por índice também. Você acessa itens usando os [
tokens e ]
. Adicione o seguinte código abaixo do que você já escreveu e experimente:
Console.WriteLine($"My name is {names[0]}.");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");
Você não tem permissão para acessar após o final da lista. Você pode verificar por quanto tempo a lista está usando a Count propriedade. Adicione o seguinte código para experimentá-lo:
Console.WriteLine($"The list has {names.Count} people in it");
Selecione Executar novamente para ver os resultados. Em C#, os índices começam em 0, portanto, o maior índice válido é um a menos do que o número de itens na lista.
Pesquisar e ordenar listas
Nossos exemplos usam listas relativamente pequenas, mas seus aplicativos geralmente podem criar listas com muito mais elementos, às vezes numerando milhares. Para encontrar elementos nessas coleções maiores, você precisa pesquisar itens diferentes na lista. O IndexOf método procura um item e retorna o índice do item. Se o item não estiver na lista, IndexOf
retorna -1
. Experimente para ver como funciona. Adicione o seguinte código abaixo do que você escreveu até agora:
var index = names.IndexOf("Felipe");
if (index != -1)
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
var notFound = names.IndexOf("Not Found");
Console.WriteLine($"When an item is not found, IndexOf returns {notFound}");
Você pode não saber se um item está na lista, então você deve sempre verificar o índice retornado por IndexOf. Se for -1
, o item não foi encontrado.
Os itens da sua lista também podem ser classificados. O Sort método classifica todos os itens na lista em sua ordem normal (alfabeticamente para cadeias de caracteres). Adicione este código e execute novamente:
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Listas de outros tipos
Você tem usado o string
tipo em listas até agora. Vamos fazer um List<T> usando um tipo diferente. Vamos construir um conjunto de números. Exclua o código que você escreveu até agora e substitua-o pelo seguinte código:
var fibonacciNumbers = new List<int> {1, 1};
Isso cria uma lista de inteiros e define os dois primeiros inteiros para o valor 1. A Sequência de Fibonacci, uma sequência de números, começa com dois 1s. Cada número de Fibonacci seguinte é encontrado tomando a soma dos dois números anteriores. Adicione este código:
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
foreach(var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
Pressione Executar para ver os resultados;
Desafio
Veja se consegue juntar alguns dos conceitos desta e de lições anteriores. Expanda o que você construiu até agora com o Fibonacci Numbers. Tente escrever o código para gerar os primeiros 20 números na sequência. (Como dica, o número 20 de Fibonacci é 6765.)
Desafio concluído
Deparou-se com algo semelhante a isto?
var fibonacciNumbers = new List<int> {1, 1};
while (fibonacciNumbers.Count < 20)
{
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
}
foreach(var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
A cada iteração do loop, você pega os dois últimos inteiros da lista, soma-os e adiciona esse valor à lista. O loop se repete até que você adicione 20 itens à lista.
Parabéns!
Você concluiu o tutorial interativo da lista. Essa é a introdução final ao tutorial interativo em C#. Você pode visitar o site .NET para baixar o SDK do .NET, criar um projeto em sua máquina e continuar codificando. A secção "Próximos passos" traz-o de volta a estes tutoriais.
Você pode saber mais sobre coleções .NET nos seguintes artigos:
Está com problemas nesta secção? Se sim, envie-nos o seu feedback para que possamos melhorar esta secção.