Tutorial ArrayList C# com exemplos

โšก Resumo Inteligente

Em C#, ArrayList รฉ uma coleรงรฃo dinรขmica do namespace System.Collections que armazena elementos como objetos. Diferentemente de um array, ela cresce e diminui em tempo de execuรงรฃo e pode conter inteiros, strings e valores booleanos em uma รบnica lista.

  • ๐Ÿ”„ Dimensionamento dinรขmico: O ArrayList adiciona e remove elementos em tempo de execuรงรฃo, portanto vocรช nรฃo fixa o nรบmero de itens antecipadamente como em um array.
  • ๐Ÿ“ฆ Armazenamento de objetos: Cada elemento รฉ armazenado como um objeto, o que permite que um ArrayList contenha tipos de dados mistos, como int, string e bool.
  • โž• Mรฉtodos principais: Os mรฉtodos add, insert, remove, removeAt, contains e sort abrangem as operaรงรตes cotidianas em um ArrayList.
  • ๐Ÿ“Š Quantidade e capacidade: A propriedade Count retorna o nรบmero atual de itens, enquanto Capacity รฉ o espaรงo de armazenamento alocado.
  • โœ… Escolha moderna: Microsoft Recomenda-se o uso da lista genรฉrica para novos cรณdigos, pois ela adiciona seguranรงa de tipo em tempo de compilaรงรฃo e evita o boxing.
  • ๐Ÿค– Assistรชncia de IA: O GitHub Copilot cria a estrutura do cรณdigo ArrayList e os pipelines do ML.NET passam dados por meio de tipos de coleรงรฃo C#.

ArrayList em C#

O que รฉ ArrayList em C#?

A coleรงรฃo ArrayList รฉ semelhante ao Arrays tipo de dados em C#. A maior diferenรงa รฉ a natureza dinรขmica da coleรงรฃo da lista de arrays.

Para arrays, vocรช precisa definir o nรบmero de elementos que o array pode conter no momento da declaraรงรฃo do array. Mas no caso da coleรงรฃo Array List, isso nรฃo precisa ser feito previamente. Os elementos podem ser adicionados ou removidos da coleรงรฃo Array List a qualquer momento. Vejamos as operaรงรตes disponรญveis para a coleรงรฃo de listas de arrays com mais detalhes.

Declaraรงรฃo de uma lista de array

A declaraรงรฃo de um ArrayList รฉ fornecida abaixo. Uma lista de array รฉ criada com a ajuda do tipo de dados ArrayList. A palavra-chave โ€œnewโ€ รฉ usada para criar um objeto de um ArrayList. O objeto รฉ entรฃo atribuรญdo ร  variรกvel a1. Entรฃo agora a variรกvel a1 serรก usada para acessar os diferentes elementos da lista do array.

ArrayList a1 = new ArrayList()

Adicionando elementos a um array

O mรฉtodo add รฉ usado para adicionar um elemento ao ArrayList. O mรฉtodo add pode ser usado para adicionar qualquer tipo de elemento de tipo de dados ร  lista de array. Portanto, vocรช pode adicionar um nรบmero inteiro, uma string ou atรฉ mesmo um valor booleano ร  lista do array. A sintaxe geral do mรฉtodo de adiรงรฃo รฉ fornecida abaixo

ArrayList.add(element)

Abaixo estรฃo alguns exemplos de como o mรฉtodo โ€œadicionarโ€ pode ser usado. O mรฉtodo add pode ser usado para adicionar vรกrios tipos de dados ร  coleรงรฃo Array List.

Abaixo vocรช pode ver exemplos de como podemos adicionar Strings de nรบmeros inteiros e atรฉ valores booleanos ร  coleรงรฃo Array List.

  • a1.add(1) โ€“ Isso adicionarรก um valor inteiro ร  coleรงรฃo
  • a1.add(โ€œExemploโ€) โ€“ Isso adicionarรก um valor String ร  coleรงรฃo
  • a1.add(true) โ€“ Isso adicionarรก um valor booleano ร  coleรงรฃo

Agora vamos ver isso funcionando no nรญvel do cรณdigo. Todo o cรณdigo mencionado abaixo serรก gravado em nosso aplicativo de console. O cรณdigo serรก gravado em nosso arquivo Program.cs.

No programa abaixo, escreveremos o cรณdigo para criar uma nova lista de arrays. Tambรฉm mostraremos como adicionar elementos e exibir os elementos da lista Array.

ArrayList em C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1[0]);	  
   Console.WriteLine(a1[1]);
   Console.WriteLine(a1[2]);
   Console.ReadKey();
  }
 }
}

Code Explicaรงรฃo:-

  1. A primeira etapa รฉ usada para declarar nossa lista de arrays. Aqui estamos declarando a1 como uma variรกvel para armazenar os elementos de nossa lista de array.
  2. Em seguida, usamos a palavra-chave add para adicionar o nรบmero 1, a String โ€œExemploโ€ e o valor booleano 'true' ร  lista do array.
  3. Em seguida, usamos o mรฉtodo Console.WriteLine para exibir o valor de cada elemento da lista de array no console. Vocรช notarรก que, assim como os arrays, podemos acessar os elementos por meio de suas posiรงรตes de รญndice. Portanto, para acessar a primeira posiรงรฃo do Array List, usamos a posiรงรฃo do รญndice [0]. E assim por diante.

Se o cรณdigo acima for inserido corretamente e o programa for executado, a seguinte saรญda serรก exibida.

Saรญda:

ArrayList em C#

Na saรญda, vocรช pode ver que todos os elementos da lista do array sรฃo enviados para o console.

Vejamos mais alguns mรฉtodos que estรฃo disponรญveis como parte do ArrayList.

Contar

Este mรฉtodo รฉ usado para obter o nรบmero de itens na coleรงรฃo ArrayList. Abaixo estรก a sintaxe geral desta instruรงรฃo.

ArrayList.Count() โ€“ Este mรฉtodo retornarรก o nรบmero de elementos que a lista do array contรฉm.

contรฉm

Este mรฉtodo รฉ usado para verificar se um elemento estรก presente na coleรงรฃo ArrayList. Abaixo estรก a sintaxe geral desta declaraรงรฃo

ArrayList.Contains(element) โ€“ Este mรฉtodo retornarรก verdadeiro se o elemento estiver presente na lista, caso contrรกrio retornarรก falso.

RemoverEm

Este mรฉtodo รฉ usado para remover um elemento em uma posiรงรฃo especรญfica na coleรงรฃo ArrayList. Abaixo estรก a sintaxe geral desta declaraรงรฃo

ArrayList.RemoveAt(index) โ€“ Este mรฉtodo removerรก um elemento de uma posiรงรฃo especรญfica da Lista Array.

Agora vamos ver isso funcionando no nรญvel do cรณdigo. Todo o cรณdigo mencionado abaixo serรก gravado em nosso aplicativo de console. O cรณdigo serรก gravado em nosso arquivo Program.cs.

No programa abaixo, escreveremos o cรณdigo para ver como podemos usar os mรฉtodos mencionados acima.

ArrayList em C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1.Count);
   Console.WriteLine(a1.Contains(2));
   Console.WriteLine(a1[1]);
   a1.RemoveAt(1);
   Console.WriteLine(a1[1]);
   Console.ReadKey();
  }
 }
}

Code Explicaรงรฃo:-

  1. Portanto, a primeira propriedade que vemos รฉ a propriedade Count. Estamos obtendo a propriedade Count da lista de array a1 e depois gravando-a no Console.
  2. Na segunda parte, estamos usando o mรฉtodo Contains para ver se ArrayList a1 contรฉm o elemento 2. Em seguida, escrevemos o resultado no Console por meio do comando Writeline.
  3. Finalmente, para mostrar o mรฉtodo Remover elemento, estamos executando as etapas abaixo,
    1. Primeiro, escrevemos o valor do elemento na posiรงรฃo 1 do รญndice da lista de arrays no console.
    2. Em seguida, removemos o elemento na posiรงรฃo 1 do รญndice da lista do array.
    3. Finalmente, escrevemos novamente o valor do elemento na posiรงรฃo 1 do รญndice da lista de arrays no console. Este conjunto de etapas darรก uma boa ideia se o mรฉtodo de remoรงรฃo funcionarรก como deveria.

Se o cรณdigo acima for inserido corretamente e o programa for executado, a seguinte saรญda serรก exibida.

Saรญda:

ArrayList em C#

Por que o รบltimo valor รฉ verdadeiro?

Se vocรช vir a sequรชncia de eventos, o elemento Exemplo รฉ removido da matriz porque estรก na posiรงรฃo 1. A posiรงรฃo 1 da matriz รฉ substituรญda pelo que estava na posiรงรฃo 2 anteriormente, cujo valor รฉ 'true'

Como percorrer um ArrayList em C#

Ler todos os elementos de um ArrayList รฉ uma tarefa comum. Como um ArrayList armazena seus itens como objetos, vocรช pode visitรก-los com um loop foreach ou com um loop for que utiliza a propriedade Count. O loop foreach รฉ a maneira mais simples, pois percorre cada item em ordem, sem a necessidade de um รญndice.

O exemplo abaixo cria um ArrayList de strings e imprime cada valor em sua prรณpria linha. O cรณdigo estรก escrito no arquivo Program.cs de um aplicativo de console.

Passo 1) Importe o namespace System.Collections e crie um ArrayList com trรชs itens.

Passo 2) Utilize um loop foreach para ler cada elemento como um objeto e escrevรช-lo no console.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add("Java");
   a1.Add("Python");
   a1.Add("Kotlin");
   foreach (object item in a1)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Code Explicaรงรฃo:-

  1. O namespace System.Collections foi importado para que o tipo ArrayList esteja disponรญvel para o programa.
  2. Trรชs valores de string sรฃo adicionados ao ArrayList com o mรฉtodo Add.
  3. O loop foreach lรช cada item como um objeto, e o mรฉtodo Console.WriteLine o imprime em uma nova linha.

Quando o programa รฉ executado, ele imprime Java, Python e Kotlin em linhas separadas. Um loop for com a propriedade Count daria o mesmo resultado, permitindo tambรฉm usar a posiรงรฃo do รญndice de cada elemento.

Mรฉtodos e propriedades do ArrayList em C#

A classe ArrayList fornece muitos mรฉtodos e propriedades integrados para gerenciar seus elementos. Alรฉm de adicionar e remover itens, ela pode classificar, pesquisar e inverter a coleรงรฃo. Os membros mais comuns estรฃo listados abaixo.

Vogal Descriรงรฃo
Adicione Adiciona um รบnico elemento ao final do ArrayList.
inserรงรฃo Adiciona um elemento em uma posiรงรฃo de รญndice especรญfica.
Eliminar Remove a primeira ocorrรชncia de um elemento especรญfico.
RemoverEm Remove o elemento na posiรงรฃo de รญndice especificada.
Limpar Remove todos os elementos do ArrayList.
tipo Ordena os elementos em ordem crescente.
Reverse Reverseรฉ a ordem dos elementos na lista.
contรฉm Retorna verdadeiro se o elemento em questรฃo existir na lista.
รndice de Retorna a posiรงรฃo do รญndice de um determinado elemento.
Contar Propriedade que retorna o nรบmero de elementos armazenados.
Capacidade Propriedade que retorna o nรบmero de elementos que a lista pode conter.

Esses elementos permitem adicionar, encontrar, ordenar e remover itens sem precisar escrever a lรณgica manualmente, o que รฉ uma das principais vantagens de usar uma coleรงรฃo em vez de um array simples.

Diferenรงa entre ArrayList e List em C#

Tanto um ArrayList quanto um genรฉrico Lista Armazenam um grupo de itens que pode crescer em tempo de execuรงรฃo, mas diferem na forma como lidam com os tipos. Conhecer a diferenรงa ajuda vocรช a escolher a opรงรฃo certa para o cรณdigo C# moderno.

As principais diferenรงas estรฃo listadas abaixo:

  • Seguranรงa do tipo: Um ArrayList armazena cada item como um objeto, enquanto uma List รฉ vinculada a um tipo declarado e verificada em tempo de compilaรงรฃo.
  • Desempenho: Um ArrayList converte e desconverte tipos de valor como int, o que consome tempo de processamento, enquanto uma List evita essa conversรฃo para maior velocidade.
  • Domรญnio: ArrayList reside em System.Collections, enquanto List reside em System.Collections.Generic.
  • Conjurar: A leitura de um ArrayList geralmente requer uma conversรฃo de volta para o tipo original, mas uma List retorna o tipo correto diretamente.
  • Recomendaรงรฃo: Microsoft Recomenda-se o uso de listas para novos desenvolvimentos por ser mais seguro, rรกpido e fรกcil de ler.

Resumindo, um ArrayList รฉ รบtil para entender cรณdigos antigos ou armazenamento de tipos mistos, enquanto uma List รฉ a escolha preferida para a maioria das aplicaรงรตes atuais.

Perguntas Frequentes

Um array tem tamanho fixo e armazena um รบnico tipo de dado definido na declaraรงรฃo. Um ArrayList cresce e diminui em tempo de execuรงรฃo e armazena cada item como um objeto, podendo assim conter tipos de dados mistos em uma รบnica lista.

ArrayList nรฃo รฉ removido, mas Microsoft Nรฃo รฉ recomendรกvel para novos desenvolvimentos. A classe genรฉrica List em System.Collections.Generic รฉ preferรญvel porque adiciona seguranรงa de tipos e melhor desempenho, portanto, a maioria dos cรณdigos C# modernos usa List em vez de List.

Como um ArrayList armazena itens como objetos, adicionar um tipo de valor como int o encapsula em um objeto, o que รฉ chamado de boxing. Ler o valor de volta e convertรช-lo para o tipo original รฉ chamado de unboxing. Ambas as etapas afetam o desempenho, algo que o List evita.

Um ArrayList suporta vรกrios leitores simultรขneos, mas nรฃo hรก garantia de que os membros da instรขncia sejam thread-safe quando a coleรงรฃo รฉ modificada. Para gravaรงรตes multithread seguras, utilize um ArrayList.Syncou utilize uma coleรงรฃo concorrente.

`Count` representa o nรบmero de elementos atualmente armazenados no `ArrayList`. `Capacity` representa o nรบmero total de elementos que ele pode armazenar antes de ser redimensionado. `Capacity` รฉ sempre igual ou maior que `Count` e aumenta automaticamente ร  medida que vocรช adiciona itens.

Vocรช pode copiar os itens para uma lista fortemente tipada com os mรฉtodos Cast e ToList, ou chamar o mรฉtodo ToArray para obter um array de objetos. Converter para uma lista genรฉrica รฉ comum porque restaura a seguranรงa de tipos.

Sim. O GitHub Copilot consegue escrever declaraรงรตes de ArrayList, adicionar e remover chamadas e criar loops a partir de um comentรกrio curto ou nome de mรฉtodo. Ele costuma sugerir tambรฉm a versรฃo genรฉrica List, jรก que essa รฉ a coleรงรฃo recomendada para novos cรณdigos C#.

O ML.NET geralmente lรช dados de treinamento por meio de coleรงรตes genรฉricas, como List e IEnumerable, que sรฃo mapeadas para seu pipeline IDataView. Um ArrayList nรฃo genรฉrico raramente รฉ usado diretamente, pois uma coleรงรฃo fortemente tipada mantรฉm os dados de aprendizado de mรกquina claros e seguros em relaรงรฃo aos tipos.

Resuma esta postagem com: