Qual é a diferença?

2 respostas
W

Saudações…

Gostaria de saber qual é a diferença entre:
java.util.Vector e java.util.ArrayList???

Quem puder me responder ficarei grato…

2 Respostas

J

ArrayList

Implementação de List que utiliza internamente um array de objetos. Em uma inserção onde o tamanho do array interno não é suficiente, um novo array é alocado (de tamanho igual a 1.5 vezes o array original), e todo o conteúdo é copiado para o novo array. Em uma inserção no meio da lista (índice < tamanho), o conteúdo posterior ao índice é deslocado em uma posição. Esta implementação é a recomendada quando o tamanho da lista é previsível (evitando realocações) e as operações de inserção e remoção são feitas, em sua maioria, no fim da lista (evitando deslocamentos), ou quando a lista é mais lida do que modificada (otimizado para leitura aleatória).

Vector

Implementação de List com o mesmo comportamento da ArrayList, porém, totalmente sincronizada. Por ter seus métodos sincronizados, tem performance inferior ao de uma ArrayList, mas pode ser utilizado em um ambiente multitarefa (acessado por várias threads) sem perigo de perda da consistência de sua estrutura interna.
Em sistemas reais, essa sincronização acaba adicionando um overhead desnecessário, pois mesmo quando há acesso multitarefa à lista (o que não acontece na maioria das vezes), quase sempre é preciso fazer uma nova sincronização nos métodos de negócio, para ’ atomizarem ’ operações seguidas sobre o Vector. Por exemplo, uma chamada ao método contains (), seguida de uma chamada do método add () caso o elemento não exista, podem causar condições de corrida, se há acessos de várioas threads ao mesmo tempo. Assim, acaba sendo necessária uma sincronização adicional, englobando estas duas operações e tornando desnecessária a sincronização inerente da classe.
Portanto, a não ser que hajam acessos simultâneos de várias threads à lista, e a sincronização simples, provida pela classe Vector, seja o bastante, prefira outras implementações como ArrayList e LinkedList, que oferecem performance superior.

Se quiser saber mais sobre Collections Framework, vai o link:
http://www.javafree.org/content/view.jf?idContent=11

W

Muito obrigado javapablo…era o que eu precisava saber mesmo…

Criado 16 de novembro de 2007
Ultima resposta 16 de nov. de 2007
Respostas 2
Participantes 2