Compartilhar via


Coleções do Tipo ArrayList e List

A System.Collections.ArrayList ou System.Collections.Generic.List<T> o objeto é uma versão sofisticada de matriz. O ArrayList classe e o List<T> classe genérica oferecem alguns recursos que são oferecidos na maioria dos System.Collections classes, mas que não estão na Array classe. Por exemplo:

  • A capacidade de um Array é fixa, enquanto a capacidade de um ArrayList ou um List<T> será automaticamente expandida conforme necessário. Se o valor de ArrayList.Capacity propriedade for alterada, a realocação de memória e a cópia de elementos são feitas automaticamente.

  • ArrayList e List<T> fornecem métodos que adicionam, inserem ou removem um intervalo de elementos. Em Array, você pode obter ou definir o valor de apenas um elemento de cada vez.

  • Uma versão sincronizada dele ArrayList é fácil criar usando o Synchronized método; No entanto, esse tipo de sincronização é relativamente ineficiente. O Array e List<T> classes deixa para o usuário para implementar a sincronização. O System.Collections.Concurrent namespace não fornece um tipo de lista simultâneas, mas fornece uma ConcurrentQueue<T> e ConcurrentStack<T> tipo.

  • ArrayListe List<T> fornecem métodos que retornam os invólucros de somente leitura e de tamanho fixo para a coleção. Arraynão.

Por outro lado, o Array oferece alguma flexibilidade que ArrayList e List<T> não oferece. Por exemplo:

  • Você pode definir o limite inferior de um Array, mas a limite inferior de um ArrayList ou um List<T> é sempre zero.

  • Um Array pode ter várias dimensões, mas um ArrayList ou List<T> sempre tem exatamente uma dimensão. No entanto, você pode criar facilmente uma lista de matrizes ou de uma lista de listas.

  • Um Array de um tipo específico (diferente de Object) fornece um desempenho melhor do que uma ArrayList. Isso ocorre porque os elementos de ArrayList são do tipo Object; Portanto, boxing e unboxing normalmente ocorrem quando você armazena ou recuperar um tipo de valor. No entanto, um List<T> pode fornecer um desempenho semelhante a uma matriz do mesmo tipo se nenhum realocações a é necessária; ou seja, se a capacidade inicial é uma boa aproximação do tamanho máximo da lista.

Na maioria dos casos em se que necessita de uma matriz pode-se usar um ArrayList ou um List<T>; elas são mais fáceis de usar e, em geral, têm desempenho similar a uma matriz de mesmo tipo.

Array está no namespace System; ArrayList está no namespace System.Collections; List<T> está no namespace System.Collections.Generic.

Consulte também

Referência

ArrayList

System.Collections

List<T>

System.Collections.Generic

Array

System.Collections.Concurrent

Conceitos

Tipos de Coleção Comumente Usadas