Diferença entre ArrayList e Vector

ArrayList vs Vector

Um vetor implementa matrizes que podem aumentar / diminuir em tempo de execução quando alguns elementos são adicionados ou removidos. Seus elementos são acessados ​​usando um índice inteiro. Dois campos - capacidade e incremento de capacidade, caracterizam o gerenciamento de armazenamento vetorial. Ele implementa quatro interfaces:
* Lista
* Acesso aleatório
* Clonável
* Interfaces serializáveis

ArrayList, assim como vetores, também implementa quatro interfaces. Novamente, como vetores, seu tamanho pode mudar durante o tempo de execução. Além disso, ele possui um campo chamado capacidade cujo tamanho é tão grande quanto o tamanho do ArrayList.

Os vetores e ArrayList são bons para recuperar elementos de qualquer posição e também para inserir ou excluir elementos do final da classe de contêiner.
Da perspectiva da API, os dois vetores e o ArrayList são muito semelhantes. Então, onde exatamente reside a diferença entre os dois? Os pontos a seguir esclarecerão esse assunto:

1. Sincronização: os vetores são sincronizados, mas ArrayList não. Se você adicionar ou excluir elementos de um ArrayList, isso será chamado de modificação estrutural. Quando vários threads estão acessando um ArrayList simultaneamente com um bloco de código que modifica a lista, é necessário sincronizar externamente a lista. Em resumo, o conteúdo vetorial é seguro para threads, enquanto o ArrayList não. Se o requisito não mencionar a coleção segura de threads, deve-se optar por ArrayList, pois a sincronização atinge o desempenho. ArrayLists não sincronizadas são rápidas.

2. Crescimento dos dados: os elementos ArrayList e vetor são armazenados como matrizes, mas os vetores têm um tamanho padrão 10 e ArrayList não tem tamanho padrão. Quando se adiciona um elemento a um ArrayList ou a um vetor, há uma chance de que qualquer classe fique sem espaço. Nesse caso, por padrão, um vetor dobra seu tamanho, enquanto o tamanho do ArrayList aumenta em 50%. Você pode definir um valor de incremento no caso de vetores que não é possível para o ArrayList.

3. Atravessando os elementos: ArrayList tem uma vantagem aqui, pois você pode acessar seus elementos simplesmente usando um índice. No caso de vetores, você precisa criar um iterador para percorrer seus elementos.

Resumo:

1.Se a classe de contêiner precisar ser modificada por um único encadeamento ou alguma variável local, você deve usar um ArrayList.
2. Quando a classe de contêiner for acessada por vários encadeamentos, use vetores, caso contrário você terá que fazer a sincronização manual.
3.Podemos especificar o tamanho do incremento com o vetor e com o ArrayList não podemos.
4. Um vetor é sincronizado e um ArrayList não é.
5.Um vetor pode aumentar o tamanho em dobro; ArrayList pode incrementá-lo em 50%.