Qual a diferença entre utilizar Vector e utilizar ArrayList. Olhando a documentação são classes quase idênticas (as duas podem ser construídas a partir de collection). Quando utilizar uma ou outra?
Vector X ArrayList
10 Respostas
A própria documentação do ArrayList responde sua pergunta:
“This class is roughly equivalent to Vector, except that it is unsynchronized.”
Já li por aí que é interessante evitar o uso de Vector, que existem outras coleções melhores.
Vector é uma classe bem velhinha já, e seu uso em código novo não é recomendado, agora que temos as Collections. Use sempre List, e, caso voce precise de uma List sincronizada, faça o seguinte:
List syncList = Collections.synchronizedList(list);
Qual é a diferença entre Collection unsynchronized e synchronized???
A diferença é simples, todo acesso a coleções sincronizadas é, hmm, sincronizado! É só pensar que todo metodo de colections synchronized são do tipo:
public synchronized ... metodo(..) ...
Ou seja, são protegidas contra acesso simultaneo vindo de varias threads.
E isso não ocorre nas coleções unsynchronized, experimenta inserir no mesmo HashMap simultaneamente de umas 10 threads diferentes para ver oque acontece…
hoje em dia o pessoal fala pra voce suar o Vector sem se rpeocupar muito: a velocidade de se obter locks nas VMs modernas eh bem rapido. Dizem os mitos que antigamente a invocacao de um metodo sinc era 48x mais lenta… e hoje eh 2x. Bem, coisas de benchmark
mas eu nao gosto e Vector nao, tem uns metodos muito feios, tipo addElement, que vem das antigas.
Mas voce pode usar Vector como list. Sem problemas.
E legal eh que o Vector tem a Enumeration, que eh um iterator sem remove sincronizado no caso dele.
Literalmente TODA a funcionalidade das classes Vector, Hashtable e Enumeration foi implementada na API de Collections. Usar Vector/Hashtable/Enumeration hoje nao faz mais sentido 
Conclusão:
evite usar Vector/Hashtable/Enumeration(estão depreciadas) ,
utilize List/Map/Iterator
Se precisar utilizar threads (e sincronizar) utilize soluções como
a q o CV postou acima.
Conclusão:
evite usar Vector/Hashtable/Enumeration(estão depreciadas) ,
utilize List/Map/Iterator</blockquote>sph um detalhe, eh bom lembrar que elas nao estao depreciadas, ok? soh estao em desuso. depreciadao eh bem mais grave.
[sarcasmo]
Se estivessem depreciadas provavelmente nem funcionariam direito, como ocorre com um monte de métodos do AWT.
[/sarcasmo]
:shock: Foi malz Paulo…errei feio!!!
Me antecipei a Sun!!!