Compartilhar via


Saiba como gerenciar coletas de dados usando a Lista<T> em C#

Este tutorial introdutório fornece uma introdução à linguagem C# e aos conceitos básicos da classe.

Este tutorial ensina o 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. Você trabalha principalmente com a List<T> classe.

Um exemplo de lista básica

Dica

Quando um bloco de snippet de código inclui o botão "Executar", esse botão abre a janela interativa ou substitui o código existente na janela interativa. Quando o snippet não inclui um botão "Executar", você pode copiar o código e adicioná-lo à janela interativa atual.

Execute o código a seguir na janela interativa. Substitua <name> pelo nome e selecione Executar:

List<string> names = ["<name>", "Ana", "Felipe"];
foreach (var name in names)
{
    Console.WriteLine($"Hello {name.ToUpper()}!");
}

Você criou uma lista de strings, adicionou três nomes a essa lista e imprimiu os nomes em maiúsculas. 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. Quando você precede um string com o $ caractere, é possível inserir o código C# na declaração de cadeia de caracteres. A string real substitui o código C# pelo valor que ele gera. Neste exemplo, ele substitui o {name.ToUpper()} por cada nome, convertido em letras maiúsculas, porque você chamou o método String.ToUpper.

Vamos continuar explorando.

Modificar o conteúdo da lista

A coleção criada usa o tipo List<T>. Esse tipo armazena sequências de elementos. Especifique o tipo dos elementos entre os colchetes angulares.

Um aspecto importante desse List<T> tipo é que ele pode crescer ou reduzir, permitindo que você adicione ou remova elementos. Você pode ver os resultados modificando o conteúdo após exibi-lo. Adicione o código a seguir após o código que você já escreveu (o 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ê removeu um também. A saída desse 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 após o 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:

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 classificar listas

Nossos exemplos usam listas relativamente pequenas, mas seus aplicativos geralmente podem criar listas com muitos outros elementos, às vezes numerando em milhares. Para encontrar elementos nessas coleções maiores, você precisa procurar diferentes itens na lista. O IndexOf método pesquisa um item e retorna o índice do item. Se o item não estiver na lista, IndexOf retornará -1. Tente ver como funciona. Adicione o seguinte código após o que você escreveu até agora:

var index = names.IndexOf("Felipe");
if (index == -1)
{
    Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
    Console.WriteLine($"The name {names[index]} is at index {index}");
}

index = names.IndexOf("Not Found");
if (index == -1)
{
    Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
    Console.WriteLine($"The name {names[index]} is at index {index}");
}

Talvez você não saiba se um item está na lista, portanto, você sempre deve verificar o índice retornado por IndexOf. Se for -1, o item não foi encontrado.

Os itens em sua lista também podem ser classificados. O Sort método classifica todos os itens da lista em sua ordem normal (em ordem alfabética 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ê vem utilizando o tipo string em listas até agora. Vamos criar um List<T> com um tipo diferente. Vamos criar um conjunto de números. Exclua o código que você escreveu até agora e substitua-o pelo seguinte código:

List<int> fibonacciNumbers = [1, 1];

Isso cria uma lista de inteiros e define os dois primeiros inteiros como o valor 1. A Sequência de Fibonacci, uma sequência de números, começa com dois 1. Cada próximo número fibonacci é 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 você pode reunir alguns dos conceitos desta e das lições anteriores. Expanda o que você criou até agora com números de Fibonacci. Tente escrever o código para gerar os primeiros 20 números na sequência. (Como dica, o 20º número de Fibonacci é 6765.)

Você pensou em algo assim?

:::code language="csharp" interactive="try-dotnet-method" source="./snippets/ListCollection/Program.cs" id="Answer":::

Com cada iteração do loop, você está tomando os dois últimos inteiros na lista, resumindo-os e adicionando esse valor à lista. O loop é repetido até que você tenha adicionado 20 itens à lista.

Você concluiu o tutorial interativo da lista, que é a introdução final ao tutorial interativo de C#. Você pode visitar o site do .NET para baixar o SDK do .NET, criar um projeto em seu computador e continuar codificando. A seção "Próximas etapas" traz você de volta a esses tutoriais. Ou você pode continuar com o tutorial Explore programação orientada a objetos com classes e objetos.

Saiba mais sobre as coleções do .NET nos seguintes artigos: