Arrays vs Arraylists
Matrizes 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 aumentar de tamanho. Por esse motivo, o programador não precisa saber o tamanho da arraylist ao defini-la.
O que são matrizes?
Mostrado na figura 1, está um trecho de código normalmente usado para declarar e atribuir valores a uma matriz. A Figura 2 mostra como um array ficaria na memória.
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 uma matriz
100 | 101 | 102 | 103 | 104 |
Índice: 0 | 1 | 2 | 3 | 4 |
Figura 2: Array armazenado na memória
Acima do código, define uma matriz que pode armazenar 5 inteiros e eles são acessados usando os índices de 0 a 4. Uma propriedade importante de uma matriz é que, toda a matriz é alocada como um único bloco de memória e cada elemento obtém seu próprio espaço na matriz. Depois que um array é definido, seu tamanho é fixo. Portanto, se você não tiver certeza sobre o tamanho do array em tempo de compilação, terá que definir um array grande o suficiente para estar no lado seguro. Mas, na maioria das vezes, usaremos menos número de elementos do que alocamos. Portanto, uma quantidade considerável de memória é realmente desperdiçada. Por outro lado, se a “matriz grande o suficiente” não for realmente grande o suficiente, o programa travaria.
O que são Arraylists?
Um arraylist pode ser visto como um array dinâmico, que pode aumentar de tamanho. Portanto, arraylists são ideais para serem usados em situações em que você não sabe o tamanho dos elementos exigidos no momento da declaração. Em Java, os 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 de wrapper dos tipos primitivos). Geralmente os arraylists são fornecidos com métodos para realizar a inserção, exclusão e pesquisa. A complexidade de tempo de acesso a um elemento é o (1), enquanto a inserção e exclusão tem uma complexidade de tempo de o (n). Em Java, os arraylists podem ser percorridos 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 que ela for definida e isso não é possível com matrizes. Mas em Java, os arraylists não podem conter tipos primitivos, mas os arrays podem ser usados para conter tipos primitivos. Mas se você precisa de uma estrutura de dados que pode variar seu tamanho, arraylist seria a melhor escolha.