I'sempre foi um para simplesmente usar:
List<String> names = new ArrayList<>();
Eu uso a interface como nome de tipo para portabilidade, para que quando eu fizer perguntas como estas eu possa retrabalhar meu código.
Quando deve LinkedList
ser utilizado sobre ArrayList
e vice-versa?
É uma questão de eficiência. A LinkedList
é rápida para adicionar e excluir elementos, mas lenta para acessar um elemento específico. A `ArrayList' é rápida para acessar um elemento específico, mas pode ser lenta para adicionar a qualquer extremidade, e especialmente lenta para excluir no meio.
Array vs. ArrayList vs. LinkedList vs. Vector vai mais fundo, assim como Lista ligada.
A "ArrayList" é acessível aleatoriamente, enquanto a "LinkedList" é realmente barata para expandir e remover elementos. Para a maioria dos casos, a ArrayList
está bem.
A menos que você tenha criado grandes listas e medido um gargalo, você provavelmente nunca precisará se preocupar com a diferença.
Depende de quais operações você estará fazendo mais na Lista.
A "ArrayList" é mais rápida para aceder a um valor indexado. É muito pior quando se insere ou elimina objectos.
Para saber mais, leia qualquer artigo que fale sobre a diferença entre arrays e listas ligadas.