Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 13, 2023 01:00 pm GMT

A arte das colees em .NET - List

Com certeza voc j precisou lidar com dados e optou por usar List, seja por toda a praticidade que esta classe proporciona ou por ser uma das mais difundidas. Uma das perguntas que eu mais gosto de me fazer quando estou programando : por que vou usar isto aqui? Essa uma das perguntas que vamos responder agora no segundo artigo da srie sobre colees.

Definindo a List

Como vimos no artigo anterior, a recomendao usar colees genricas, ento encontramos a classe List<T> no namespace System.Collections.Generic. A List<T> representa uma lista fortemente tipada de objetos que podem ser acessados por ndice e possui mtodos para pesquisar, classificar e manipular as listas. Por baixo dos panos, a List<T> um array unidimensional que comea em ndice zero.

Utilizando a List<T>

Para inicializar uma lista do tipo Aluno, escrevemos assim:

List<Aluno> alunos = new List<Aluno>();

Ao utilizarmos o construtor sem parmetros, iremos criar uma lista com a capacidade padro, que 4. Aps a inicializao, podemos adicionar itens lista usando o mtodo Add() passando o objeto aluno como parmetro, assim:

alunos.Add(new Aluno { Id = 1, Nome = "Thaise" });

Agora aqui a dica de ouro para otimizar seu cdigo usando List<T> com uma grande quantidade de itens! Se no definirmos a capacidade, o .NET vai criar uma com capacidade para at 4 itens, que o padro. Toda vez que um item adicionado, verificado se a capacidade da lista comporta mais um item. Caso a capacidade seja menor que a quantidade de itens mais 1, que estamos tentando adicionar, ser criada uma nova lista com a capacidade duplicada e os itens da lista atual sero copiados para a nova.

Por exemplo: no nosso cdigo acima, criamos uma lista de alunos usando o construtor sem parmetros e adicionamos um aluno nela. Neste momento, temos uma lista de alunos com capacidade para at 4 itens e um item adicionado. Agora vamos inserir mais 3 itens:

alunos.Add(new Aluno { Id = 2, Nome = "Ana" });alunos.Add(new Aluno { Id = 3, Nome = "Cristiano" });alunos.Add(new Aluno { Id = 4, Nome = "Maggie" });

Neste momento ainda temos uma lista com capacidade para at 4 itens e agora com 4 itens. Isso significa que estamos utilizando a capacidade mxima. Quando adicionarmos mais um item, a verificao para saber se a lista comporta mais um item vai retornar negativa. Para comportar mais itens, ser criada uma nova lista com a capacidade duplicada da atual, que ser 8. Os itens da lista atual sero copiados para a nova e a sim ser adicionado o quinto item, fazendo com que ainda sobre 3 posies. Essa lgica repetida quantas vezes forem necessrias para comportar os itens que estamos adicionando e assim vamos criando listas com capacidade de 4, 8, 16, 32, 64, 128... E as listas antigas simplesmente so deixados para trs e ficam a cargo do Garbage Collector fazer a limpeza delas. Dependendo da quantidade, isso gera presso desnecessria no GC afetando a performance da sua aplicao. Entenderam a importncia de definirmos a capacidade? Para isso, basta usar o construtor com o parmetro int:

List<Aluno> alunos = new List<Aluno>(500);

Concluso

Usar a capacidade na inicializao da lista uma abordagem extremamente simples mas muito til ao lidar com grande quantidade dados. "Ah, mas e quando eu no sei quantos itens sero adicionados?" Aqui entra a importncia de entendermos a volumetria da aplicao que estamos trabalhando. A ideia no acertarmos a quantidade exata, mas termos uma noo para evitarmos presso desnecessria no Garbage Collector. Quer entender com mais detalhes como isso funciona no GC? Confira aqui

Referncias

List<T> Class
Github - dotnet runtime


Original Link: https://dev.to/unhacked/a-arte-das-colecoes-em-net-list-3b3f

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To