Diferença entre Arrays e Arraylists
Arrays vs Arraylists
Arrays são as estruturas de dados mais utilizadas para armazenar uma coleção de elementos. A maioria das linguagens de programação fornece métodos para declarar facilmente arrays e acessar elementos nas matrizes. Um arraylista pode ser visto como uma matriz dinâmica, que pode crescer em tamanho. Por esse motivo, o programador não precisa saber o tamanho do arraylista quando a está definindo.
O que são Arrays?
Mostrado na figura 1, é um pedaço de código normalmente usado para declarar e atribuir valores a uma matriz. A Figura 2 mostra como uma matriz seria semelhante à memória.
valores int [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 uma matriz
100 | 101 | 102 | 103 | 104 |
Índice: 0 | 1 | 2 < 3 | 4 | |
Figura 2: Array armazenado na memória Código acima, define uma matriz que pode armazenar 5 inteiros e eles são acessados usando os índices 0 a 4. Uma propriedade importante de uma matriz é essa, Toda a matriz é alocada como um único bloco de memória e cada elemento obtém seu próprio espaço na matriz. Uma vez definida uma matriz, seu tamanho é corrigido. Então, se você não tem certeza sobre o tamanho da matriz em tempo de compilação, você precisaria definir uma disposição suficientemente grande para estar no lado seguro. Mas, na maioria das vezes, na verdade, vamos usar menos número de elementos do que alocamos. Portanto, uma quantidade considerável de memória é realmente desperdiçada. Por outro lado, se a "grande disposição suficiente" não for realmente grande o suficiente, o programa falharia.
O que são Arraylists?
Um arraylist pode ser visto como uma matriz dinâmica, que pode crescer em tamanho. Portanto, os arraylistas são ideais para serem usados em situações em que você não conhece o tamanho dos elementos necessários no momento da declaração. Em Java, os arraylistas só podem armazenar 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 arraylists são fornecidos com métodos para realizar inserção, exclusão e busca. A complexidade do tempo de acesso a um elemento é o (1), enquanto a inserção e exclusão têm uma complexidade de tempo de o (n). Em Java, os arraylistas podem ser percorridos usando loops foreach, iteradores ou simplesmente usando os índices.
Qual a diferença entre Arrays e Arraylists
Embora os arrays e arraylists sejam semelhantes no sentido de que ambos são usados para armazenar coleções de elementos, eles diferem em como eles são definidos. O tamanho da matriz deve ser dado quando uma matriz é definida, mas você pode definir um arraylista sem saber o tamanho real. Você pode adicionar elementos a um arraylist depois que ele é definido e isso não é possível com arrays.Mas em Java, os arraylistas não podem conter tipos primitivos, mas os 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.