Diferença entre Array e ArrayList Diferença entre

Anonim

O que é Array e ArrayList?

Array e ArrayList são estruturas de dados baseadas em índice que são freqüentemente usadas em programas Java. Conceitualmente falando, ArrayList é internamente apoiado por arrays, no entanto, entender a diferença entre os dois é a chave para se tornar um excelente desenvolvedor Java. É um passo básico para começar, especialmente os iniciantes que acabaram de começar a codificar. Embora ambos sejam usados ​​para armazenar elementos em Java, que podem ser primitivos ou objetos, eles têm sua parcela justa de diferenças em termos de funcionalidade e desempenho. A principal diferença entre os dois é que Array é estático, enquanto o ArrayList é de natureza dinâmica. Este artigo compara os dois em vários aspectos para que você possa escolher um sobre o outro.

Diferença entre Array e Arraylist

  1. Redimensionável

Uma das principais e notáveis ​​diferenças entre as duas estruturas de dados é que a matriz é de natureza estática, o que significa que é um tipo de dados de comprimento fixo enquanto ArrayList é de natureza dinâmica, o que significa que é uma estrutura de dados de comprimento variável. Em termos técnicos, o comprimento da Array não pode ser alterado ou modificado quando o objeto Array é criado. Ele contém coleção seqüencial de elementos do mesmo tipo de dados. Arrays em Java funcionam de forma diferente do que funcionam em C / C ++. ArrayList, por outro lado, pode redimensionar-se e os arrays podem crescer conforme eles precisavam. Como é uma estrutura dinâmica de dados, os elementos podem ser adicionados e removidos da lista.

  1. Generics

Você não pode criar matrizes de classes genéricas de interfaces em Java, portanto, matrizes e genéricos não vão de mãos dadas, tornando impossível criar uma matriz genérica pela única razão básica que os arrays são covariantes enquanto os genéricos são invariantes. Embora Array seja uma estrutura de dados de comprimento fixo, ele contém objetos da mesma classe ou primitivas do tipo de dados específico. Então, se você tentar armazenar outro tipo de dados diferente do especificado ao criar o objeto Array, ele simplesmente lança "ArrayStoreException". ArrayList, por outro lado, suporta o Generics para garantir a segurança do tipo.

  1. Primitivas

Tipos de dados primitivos, como int, double, long e char, não são permitidos no ArrayList. Em vez disso, objetos e primitivas não são considerados objetos em Java. Arrays, por outro lado, podem armazenar primitivas, bem como objetos em Java porque é uma das estruturas de dados mais eficientes em Java para armazenar objetos. É um tipo de dados agregado que é projetado para armazenar objetos que podem ser do mesmo tipo ou de um tipo diferente.

  1. Comprimento

Para obter o comprimento da matriz, o código precisa acessar o atributo de comprimento porque é necessário conhecer o comprimento para executar as operações na matriz.Enquanto ArrayList usa o método size () para determinar o tamanho do ArrayList, é bastante diferente de determinar o comprimento da matriz. O atributo do método size () determina o número de elementos em um ArrayList, que por sua vez é a capacidade do ArrayList.

Para o exemplo :

classe pública ArrayLengthTest {

public static void main (String [] args) {

ArrayList arrList = new ArrayList ();

String [] items = {"One", "Two", "Three"};

para (String str: items) {

arrList. adicionar (str);

}

int size = items. Tamanho();

Sistema. Fora. println (tamanho);

}

}

  1. Implementação

Array é um componente de programação nativo em Java que são criados dinamicamente e eles usam o operador de atribuição para armazenar elementos, enquanto o ArrayList usa o atributo add () para inserir elementos. ArrayList é uma classe da estrutura de coleta em Java que usa um conjunto de métodos especificados para acessar e modificar os elementos. O tamanho de um ArrayList pode ser aumentado ou diminuído dinamicamente. Os elementos em uma matriz são armazenados em local de memória contígua e seu tamanho permanece estático por toda parte.

  1. Desempenho

Embora ambas as estruturas de dados forneçam um desempenho semelhante ao de um ArrayList, é suportado por Arrays, um tem uma pequena vantagem sobre o outro principalmente em termos de tempo de CPU e uso de memória. Digamos, se você conhece o tamanho da matriz, é provável que você vá com o ArrayList. No entanto, iterar sobre uma matriz é um pouco mais rápido do que iterar sobre um ArrayList. Se o programa envolver um grande número de primitivas, uma matriz irá apresentar um desempenho significativamente melhor do que o ArrayList, tanto em termos de tempo quanto de memória. As matrizes são uma linguagem de programação de baixo nível que pode ser usada nas implementações da coleção. No entanto, o desempenho pode variar dependendo da operação que você está executando.

Array vs. Arraylist

Array ArrayList
Array é uma estrutura de dados de comprimento fixo cujo comprimento não pode ser modificado quando o objeto de matriz é criado. ArrayList é de natureza dinâmica, o que significa que pode redimensionar-se para crescer quando necessário.
O tamanho de uma matriz permanece estático em todo o programa. O tamanho de um ArrayList pode crescer dinamicamente dependendo da carga e capacidade.
Usa o operador de atribuição para armazenar elementos. Ele usa o atributo add () para inserir elementos.
Pode conter primitivas, bem como objetos com o mesmo tipo de dados ou diferentes. Primitivas não são permitidas na ArrayList. Ele só pode conter tipos de objeto.
Arrays e Generics não andam de mãos dadas. Os genéricos são permitidos no ArrayList.
As matrizes podem ser multidimensionais. ArrayList é de uma única dimensão.
É um componente de programação nativo onde os elementos são armazenados em locais de memória contíguos. É uma classe da estrutura de coleções de Java onde os objetos nunca são armazenados em locais contíguos.
Comprimento variável é usado para determinar o comprimento da matriz. O método Tamanho () é usado para determinar o tamanho do ArrayList.
Toma menos memória do que ArrayList para armazenar elementos ou objetos especificados. Toma mais memória que a matriz para armazenar objetos.
Iterando sobre uma matriz é mais rápido do que iterar em uma ArrayList. Iterating sobre uma ArrayList é significativamente mais lento em termos de desempenho.

Resumo

Embora alguns possam pensar que a implementação de arrays em um programa pode obter resultados mais rápido do que fazer o mesmo com ArrayLists pelo simples motivo de que os arrays são uma estrutura de dados de baixo nível, o desempenho pode variar de acordo com a operação que você " Re performing. Bem, o comprimento de uma matriz é fixo, enquanto o tamanho do ArrayList pode ser aumentado ou diminuído dinamicamente, então ArrayList tem uma pequena vantagem sobre a matriz em termos de funcionalidade. No entanto, apesar das diferenças, eles compartilham algumas semelhanças também. Ambos são estruturas de dados baseadas em índice em Java que permitem armazenar objetos e ambos permitem valores nulos, bem como duplicatas. Bem, se você conhece o tamanho dos objetos de antemão, você deve ir com uma matriz, e se você não tem certeza sobre o tamanho, vá com o ArrayList.