Diferenças entre Array e ArrayList

Matriz e ArrayList são estruturas de dados importantes, usadas para armazenar vários elementos e processá-los. Mas existem diferenças importantes entre elas. Um bom programador deve estar ciente das comparações entre eles, para que ele possa efetivamente decidir sobre o que usar quando e por que.

Matriz

A matriz é uma estrutura de dados onde podemos armazenar elementos de um determinado tamanho de um tipo semelhante. Por exemplo, matriz de tipo inteiro, matriz de tipo string, etc. Portanto, uma matriz normal em Java é uma estrutura de dados estática.

ArrayList

Um ArrayList é uma estrutura de dados dinâmica, na qual itens podem ser adicionados e removidos da lista. Portanto, se você não tiver certeza sobre quantos elementos existirão em sua matriz, essa estrutura dinâmica de dados o salvará.

Neste artigo, discutiremos as diferenças entre Array e ArrayList em java.

Exemplo para entender Array e ArrayList

A matriz é uma estrutura de dados onde podemos armazenar elementos de um determinado tamanho fixo de um tipo semelhante.

Exemplo de código:

Vamos criar uma matriz de cinco elementos do tipo int. Vamos iterar através deles usando o loop for

Um ArrayList é uma estrutura de dados dinâmica, na qual itens podem ser adicionados e removidos da lista. Portanto, se você não tiver certeza sobre quantos elementos existirão em sua matriz, essa estrutura dinâmica de dados o salvará.

Exemplo de código:

Diferenças do Head to Head entre Array e ArrayList (Infographics)

Dada a seguir, estão as principais diferenças entre Array e ArrayList:

Principais diferenças entre Array e ArrayList em Java

1. Flexibilidade

Uma matriz é uma estrutura de dados estática. Depois de definir o tamanho da matriz, você não poderá alterar o valor do tamanho. Portanto, uma matriz normal em Java é uma estrutura de dados estática, porque o tamanho inicial da matriz é fixo.

Por outro lado, o ArrayList é flexível em tamanho. Você pode adicionar ou remover itens da lista conforme sua conveniência. Ao remover itens do ArrayList, atribuímos nulo ao índice cujo valor foi removido e todo o valor do índice é rebaixado automaticamente por um. O mesmo vale para adição também.

2. Implementação

Uma matriz é uma estrutura de dados onde podemos armazenar elementos de um determinado tamanho fixo de um tipo semelhante. Um ArrayList é uma estrutura de dados dinâmica, na qual itens podem ser adicionados e removidos da lista. Na verdade, o ArrayList é implementado usando uma matriz em Java. Você precisa importar o pacote java.util.ArrayList para usar o método ArrayList () para criar o objeto ArrayList.

Exemplo de trecho de código de Matriz

Exemplo de código Snippet of ArrayList

3. Desempenho

Embora o ArrayList seja basicamente baseado no Array, vemos diferenças de desempenho entre eles. Isso ocorre devido ao tipo de armazenamento e funcionalidade do ArrayList. Vemos diferenças de desempenho em termos de tempo de CPU e utilização de memória. Dependendo das operações que você está executando, o desempenho de Array e ArrayList variará:

ArrayList requer mais memória para fins de armazenamento em comparação com uma matriz. Isso ocorre porque o armazenamento de objetos semelhantes requer mais memória do que o armazenamento de variáveis ​​do tipo primitivo semelhantes.

Operação resize (): ArrayList usa redimensionamento automático, onde uma matriz temporária é criada para copiar elementos da matriz antiga para uma nova matriz. Isso diminui o desempenho geral.

Operação get (): para acesso baseado em índice, ArrayList e array têm o mesmo desempenho, pois isso requer tempo constante.

operação add (): Aqui vemos a diferença principal, pois adicionar um novo elemento no ArrayList requer duas operações internamente: Copie e redimensione. A adição em ArrayList cria uma nova matriz em segundo plano e copia elementos da antiga para uma nova matriz.

4. Primitivos

Uma matriz pode armazenar os tipos de elementos primitivo e de objeto. Por outro lado, um ArrayList não pode armazenar tipos primitivos; ele pode armazenar apenas objetos do mesmo tipo.

Então, como podemos armazenar valores inteiros em um ArrayList?

A resposta é o recurso de autoboxing da JVM. A autoboxing converte internamente a primitiva em seus objetos equivalentes.

Por exemplo:

Portanto, o autobox funciona internamente abaixo das coisas

5. Digite Segurança

Uma matriz pode armazenar apenas elementos de um tipo semelhante. Se você deseja armazenar diferentes tipos de elementos em uma matriz que não sejam os especificados, ela lançará ArrayStoreException ao criar o objeto dessa matriz. Essa exceção será lançada em tempo de execução, pois a matriz não é segura para o tipo; nenhuma verificação em tempo de compilação existe para a matriz.

Por exemplo:

Por outro lado, o ArrayList é seguro para o tipo, pois garante a segurança do tipo pelos genéricos. Os genéricos permitem que o compilador verifique se há algum tipo de incompatibilidade durante a compilação.

6. Iterando os Valores

ArrayList usa o método iterator () para criar a coleção. Então, usando um loop while, percorreremos os elementos um por um e imprimiremos os valores.

Por outro lado, podemos usar o loop for ou para cada loop iterar através de uma matriz.

7. comprimento

Em muitos casos de uso, podemos precisar obter o tamanho de toda a matriz. No caso de Arraylist, esse cálculo é bastante direto. Podemos obter um comprimento de ArrayList usando o método size ().

Por outro lado, cada objeto da matriz possui a variável length, que retorna o comprimento da matriz.

Por exemplo:

8. Adicionando elementos

É possível adicionar ou inserir no ArrayList, pois é uma estrutura de dados dinâmica. Podemos usar o método add () para inserir elementos em um ArrayList após sua criação.

Por outro lado, o tamanho da matriz é fixo. No entanto, podemos inserir elementos em uma matriz por atribuição. Não podemos adicionar dinamicamente novos elementos além do tamanho de uma matriz.

Por exemplo:

9. Dimensão

ArrayList é unidimensional. Considerando que, a matriz pode ser multidimensional.

Por exemplo:

Array e ArrayList - tabela de comparação

Vamos discutir a melhor comparação entre Array e ArrayList

Base de comparaçãoMatrizArrayList
FlexibilidadeA matriz é uma estrutura de dados estáticaArrayList é uma estrutura de dados dinâmica
Primitivaspode armazenar os tipos de elementos primitivo e de objetosó pode armazenar objetos do mesmo tipo.
Tipo SegurançaA matriz pode armazenar apenas elementos de um tipo semelhante. Caso contrário, ele lançará ArrayStoreException ao criar o objeto dessa matriz.O ArrayList é seguro para o tipo, pois garante a segurança do tipo pelos genéricos.
Iterando os Valoresuse for loop ou para cada loop para obter a iteração.Usa o método iterator () para criar a coleção
Adicionando elementospode inserir elementos em uma matriz por atribuição.use o método add () para inserir elementos em um ArrayList

Dimensãomultidimensionalunidimensional

Array-Conclusão vs ArrayList

Isso é tudo sobre a importante distinção entre uma matriz e um ArrayList em Java. A principal distinção vital que você deve ter em mente é que a matriz é estática, enquanto o ArrayList é de natureza dinâmica. Basicamente baseado nessa distinção, você deve usar uma matriz se reconhecer as dimensões à frente, se não tiver certeza, basta usar o ArrayList.

Artigos recomendados

Este é um guia para Array vs ArrayList. Aqui discutimos as principais diferenças entre Matriz e MatrizList com infográficos, exemplos e tabela de comparação. Você também pode consultar nossos outros artigos sugeridos para saber mais -

  1. ArrayList vs Vector Java
  2. Matriz C # vs Lista
  3. C vs Java
  4. Vantagens da matriz
  5. Iterador em Java
  6. Benefícios dos loops do Python | Exemplo