Lista de Array vs Vetor
Um arraylist pode ser visto como um array dinâmico, que pode crescer em tamanho. Por esta razão, o programador não precisa saber o tamanho da lista de arrays ao defini-la. O vetor também pode ser visto como uma matriz que pode crescer em tamanho. Os vetores podem ser facilmente alocados e podem ser usados quando o tamanho necessário do armazenamento não é conhecido até o tempo de execução.
O que é uma Arraylist?
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. Em Java, as listas de matrizes foram introduzidas a partir da versão 1.2 e fazem parte do Java Collections Framework.
O que é um Vetor?
Vector também é um array que pode crescer em tamanho. Os vetores podem ser facilmente alocados e podem ser usados quando o tamanho necessário do armazenamento não for conhecido até o tempo de execução. Vetores também só podem conter objetos e não podem conter tipos primitivos. Os vetores são sincronizados, portanto, podem ser usados com segurança em ambientes multithread. Os vetores são fornecidos com métodos para adicionar objetos, excluir objetos e pesquisar objetos. Semelhante ao arraylist em java, os vetores podem ser percorridos usando loops foreach, iteradores ou simplesmente usando os índices. Quando se trata de Java, os vetores foram incluídos desde a primeira versão do Java.
Qual é a diferença entre Arraylist e Vector?
Mesmo que tanto as listas de arrays quanto os vetores sejam muito semelhantes aos arrays dinâmicos que podem crescer em tamanho, eles têm algumas diferenças importantes. A principal diferença entre listas de matrizes e vetores é que os vetores são sincronizados, enquanto as listas de matrizes não são sincronizadas. Portanto, usar arraylists em ambientes multithread não será adequado, enquanto vetores podem ser usados com segurança em ambientes multithread (já que são thread-safe). Mas a sincronização em vetores causaria uma redução no desempenho. Portanto, não seria uma boa ideia usar vetores em um único ambiente de encadeamento. Internamente, tanto as listas de matrizes quanto os vetores usam matrizes para armazenar objetos. Quando o espaço atual não for suficiente, os vetores dobrarão o tamanho de seu array interno, enquanto as listas de arrays aumentam o tamanho de seu array interno em 50%. Mas ao usar tanto as listas de matrizes quanto os vetores, fornecendo uma capacidade inicial adequada, pode-se evitar o redimensionamento desnecessário da matriz interna. Em uma situação em que a taxa de crescimento dos dados é conhecida, o uso de vetores seria mais adequado, pois o valor incremental dos vetores poderia ser definido.