Arrays vs Arraylists
Arrays são a estrutura de dados mais comumente usada para armazenar uma coleção de elementos. A maioria das linguagens de programação fornece métodos para declarar arrays facilmente e acessar elementos nos arrays. Um arraylist pode ser visto como um array dinâmico, que pode crescer em tamanho. Devido a esta razão, o programador não precisa saber o tamanho da lista de arrays ao defini-la.
O que são Arrays?
Mostrado na figura 1, é um pedaço de código normalmente usado para declarar e atribuir valores a um array. A Figura 2 mostra como um array ficaria na memória.
int valores[5]; valores[0]=100; valores[1]=101; valores[2]=102; valores[3]=103; valores[4]=104; |
Figura 1: Código para declarar e atribuir valores a um array
100 | 101 | 102 | 103 | 104 |
Índice: 0 | 1 | 2 | 3 | 4 |
Figura 2: Array armazenado na memória
Acima do código, define um array que pode armazenar 5 inteiros e eles são acessados usando índices de 0 a 4. Uma propriedade importante de um array é que, todo o array é alocado como um único bloco de memória e cada elemento recebe seu próprio espaço na matriz. Uma vez que uma matriz é definida, seu tamanho é fixo. Então, se você não tiver certeza sobre o tamanho do array em tempo de compilação, você teria que definir um array grande o suficiente para estar no lado seguro. Mas, na maioria das vezes, usaremos um número menor de elementos do que alocamos. Portanto, uma quantidade considerável de memória é realmente desperdiçada. Por outro lado, se o “array grande o suficiente” não for grande o suficiente, o programa irá travar.
O que são Arraylists?
Um arraylist pode ser visto como um array dinâmico, que pode crescer em tamanho. Portanto arraylists são ideais para serem usados em situações em que você não sabe o tamanho dos elementos requeridos no momento da declaração. Em Java, arraylists só podem conter objetos, não podem conter tipos primitivos diretamente (você pode colocar os tipos primitivos dentro de um objeto ou usar as classes wrapper dos tipos primitivos). Geralmente as listas de matrizes são fornecidas com métodos para realizar inserção, exclusão e pesquisa. A complexidade de tempo de acesso a um elemento é o(1), enquanto a inserção e a exclusão tem uma complexidade de tempo de o(n). Em Java, arraylists podem ser percorridas usando loops foreach, iteradores ou simplesmente usando os índices.
Qual é a diferença entre Arrays e Arraylists
Mesmo que os arrays e arraylists sejam semelhantes no sentido de que ambos são usados para armazenar coleções de elementos, eles diferem na forma como são definidos. O tamanho da matriz deve ser fornecido quando uma matriz é definida, mas você pode definir uma lista de matrizes sem saber o tamanho real. Você pode adicionar elementos a uma lista de matrizes depois de definida e isso não é possível com matrizes. Mas em Java, arraylists não podem conter tipos primitivos, mas arrays podem ser usados para armazenar tipos primitivos. Mas se você precisar de uma estrutura de dados que possa variar seu tamanho, arraylist seria a melhor escolha.