Array e ArrayList são estruturas de dados baseadas em índice que são frequentemente usadas em programas Java. Conceitualmente falando, o ArrayList é apoiado internamente por matrizes, no entanto, entender a diferença entre os dois é a chave para se tornar um ótimo desenvolvedor Java. É o passo básico para começar, especialmente os iniciantes que começaram a codificar. Embora ambos sejam usados para armazenar elementos em Java, que podem ser primitivos ou objetos, eles têm seu quinhão de diferenças em termos de funcionalidade e desempenho. A principal diferença entre os dois é que Array é estático, enquanto ArrayList é de natureza dinâmica. Este artigo compara os dois em vários aspectos, para que você possa escolher um sobre o outro.
Uma das principais e notáveis diferenças entre as duas estruturas de dados é que Array é 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 matriz não pode ser alterado ou modificado depois que o objeto matriz é criado. Ele contém uma coleção seqüencial de elementos do mesmo tipo de dados. Matrizes em Java funcionam de maneira diferente do que elas funcionam em C / C ++. ArrayList, por outro lado, pode se redimensionar e as matrizes podem crescer conforme necessário. Como é uma estrutura de dados dinâmica, os elementos podem ser adicionados e removidos da lista.
Você não pode criar classes de interfaces Matrizes de Genéricos em Java, portanto matrizes e genéricos não andam de mãos dadas, impossibilitando a criação de Matrizes Genéricas pelo único motivo básico de que matrizes são covariantes e genéricas são invariantes. Embora a matriz seja uma estrutura de dados de comprimento fixo, ela contém objetos da mesma classe ou primitivas do tipo de dados específico. Portanto, se você tentar armazenar um tipo de dados diferente daquele especificado durante a criação do objeto Array, ele simplesmente lançará "ArrayStoreException". Por outro lado, o ArrayList suporta Genéricos para garantir a segurança do tipo.
Tipos de dados primitivos, como int, double, long e char, não são permitidos em ArrayList. Em vez disso, contém objetos e as primitivas não são consideradas objetos em Java. As matrizes, por outro lado, podem conter primitivos e objetos em Java, porque é uma das estruturas de dados mais eficientes em Java para armazenar objetos. É um tipo de dados agregado projetado para conter objetos que podem ser do mesmo ou de outro tipo.
Para obter o comprimento da matriz, o código precisa acessar o atributo length, pois é necessário saber a duração para executar operações na matriz. Embora o ArrayList use o método size () para determinar o tamanho do ArrayList, ele é bastante diferente de determinar o comprimento do Array. O atributo do método size () determina o número de elementos em um ArrayList, que, por sua vez, é a capacidade do ArrayList.
Por exemplo:
classe pública ArrayLengthTest
public static void main (String [] args)
ArrayList arrList = new ArrayList ();
String [] items = "Um", "Dois", "Três";
for (String str: items)
arrList.add (str);
int tamanho = items.size ();
System.out.println (tamanho);
Matriz é um componente de programação nativo em Java que é criado dinamicamente e eles usam o operador de atribuição para armazenar elementos, enquanto 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 no local da memória contígua e seu tamanho permanece estático durante todo.
Embora ambas as estruturas de dados ofereçam um desempenho semelhante ao de um ArrayList, o ArrayList possui uma pequena vantagem sobre a outra principalmente em termos de tempo da CPU e uso de memória. Digamos que, se você souber o tamanho da matriz, é provável que você vá com o ArrayList. No entanto, a iteração sobre uma matriz é um pouco mais rápida do que a iteração sobre uma matriz de matriz. Se o programa envolver um grande número de primitivas, uma matriz terá um desempenho significativamente melhor que o ArrayList, em termos de tempo e memória. Matrizes são uma linguagem de programação de baixo nível que pode ser usada em implementações de coleção. No entanto, o desempenho pode variar dependendo da operação que você está executando.
Matriz | ArrayList |
Matriz é uma estrutura de dados de comprimento fixo cujo comprimento não pode ser modificado depois que o objeto da matriz é criado. | ArrayList é de natureza dinâmica, o que significa que pode se redimensionar para crescer quando necessário. |
O tamanho de uma matriz permanece estático durante todo o programa. | O tamanho de um ArrayList pode crescer dinamicamente, dependendo da carga e capacidade. |
Ele usa o operador de atribuição para armazenar elementos. | Ele usa o atributo add () para inserir elementos. |
Ele pode conter primitivas, bem como objetos com o mesmo ou diferente tipo de dados. | Primitivas não são permitidas em ArrayList. Só pode conter tipos de objetos. |
Matrizes e genéricos não andam de mãos dadas. | Genéricos são permitidos em ArrayList. |
As matrizes podem ser multidimensionais. | ArrayList é unidimensional. |
É 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 do Java em que os objetos nunca são armazenados em locais contíguos. |
A variável Length é usada para determinar o comprimento da matriz. | O método Size () é usado para determinar o tamanho do ArrayList. |
Leva menos memória que ArrayList para armazenar elementos ou objetos especificados. | Leva mais memória que a matriz para armazenar objetos. |
A iteração sobre uma matriz é mais rápida que a iteração sobre um ArrayList. | A iteração sobre um ArrayList é significativamente mais lenta em termos de desempenho. |
Enquanto alguns podem pensar que implementar matrizes em um programa pode obter resultados mais rapidamente do que fazer o mesmo com ArrayLists pelo simples motivo de que matrizes são uma estrutura de dados de baixo nível, o desempenho pode variar de acordo com a operação que você está executando. Bem, o comprimento de uma matriz é fixo, enquanto o tamanho da matriz pode ser aumentado ou diminuído dinamicamente, portanto, a matriz tem uma pequena vantagem sobre a matriz em termos de funcionalidade. No entanto, apesar das diferenças, eles também compartilham algumas semelhanças. Ambas são estruturas de dados baseadas em índice em Java que permitem armazenar objetos e permitem valores nulos e duplicatas. Bem, se você conhece o tamanho dos objetos de antemão, deve usar uma matriz e, se não tiver certeza do tamanho, escolha ArrayList.