Quais as diferenças entre List e Arrays?
Quais as diferenças entre List e Arrays?
Bom dia, Isabela. Tudo bom?
Um array é um tipo de estrutura de dados onde suas váriaveis (do mesmo tipo), podem ser acessados por um índice. No C# temos a classe Array, que me muito similar a classe ArrayList e List, porém ela tem algumas características:
Pode der uma ou mais dimensões
int[,] numeros = new int[5,2];
Tem capacidade fixa
Acesso indexado ( pelos índices)
int[,] numeros = new int[5,2];
Console.WriteLine("Acessando indice: "+numeros[1,2]);
Exemplos de criação de um array:
//Exemplo 1
Array meuArrayObjetos = Array.CreateInstance(typeof(Cliente), 5);
//Exemplo 2
Cliente[] array = new Cliente[5];
A classe List (que trabalha com generics) e Arraylist são versões melhoradas de um Array, e possuem capacidade: Podem ser expandidas de tamanho
```
List<Cliente> lista = new List<Cliente>();
lista.Capacity = 5;
```
Possuem métodos para adicionar, excluir entre outros.
```
Cliente cliente = new Cliente();
cliente.Nome = "André";
cliente.Idade = 35;
List<Cliente> lista = new List<Cliente>();
lista.Add(cliente);
```
Possuem métodos de ordenação com um objeto.
Cliente cliente = new Cliente();
cliente.Nome = "André";
cliente.Idade = 41;
Cliente cliente2 = new Cliente();
cliente2.Nome = "Suzy";
cliente2.Idade = 40;
List<Cliente> lista = new List<Cliente>();
lista.Add(cliente);
lista.Add(cliente2);
lista.Sort();
foreach (var item in lista)
{
Console.WriteLine("Nome: "+item.Nome);
Console.WriteLine("Idade: " + item.Idade);
}
Para usar o método Sort, seu objeto precisa implementar a interface IComparable
, na clsse cliente do exemplo implementei uma forma de ordenação pela idade.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
internal class Cliente : IComparable<Cliente>
{
string nome;
int idade;
public string Nome { get => nome; set => nome = value; }
public int Idade { get => idade; set => idade = value; }
** public int CompareTo(Cliente? other)
{
if (other == null)
return 1;
else
return this.idade.CompareTo(other.idade);
}**
}
}
Para tipos como string ou int não é necessário trabalhar a interface IComparable
, exemplo:
List<int> listaDeNumeros = new List<int>();
listaDeNumeros.Add(58);
listaDeNumeros.Add(-500);
listaDeNumeros.Add(6932);
listaDeNumeros.Add(0);
listaDeNumeros.Add(27);
listaDeNumeros.Add(153);
listaDeNumeros.Sort();
for (int i = 0; i < listaDeNumeros.Count; i++)
{
Console.WriteLine(listaDeNumeros[i]);
}
Espero ter ajudado, dê uma olhada também na documentação oficial blz?
https://docs.microsoft.com/pt-br/dotnet/api/system.collections.generic.list-1?view=net-6.0 (LIST)
https://docs.microsoft.com/pt-br/dotnet/api/system.array?view=net-6.0 (ARRAY)