Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

ArrayList ou LinkedList

Para mim ficou muito vago quando optar por ArrayList ou LinkedList. Poderia esclarecer?

3 respostas

Olá Maurício, tudo bem com você?

Basicamente, quando você tiver um caso onde será preciso inserir ou remover elementos de uma lista frequentemente, o LinkedList pode ser uma boa escolha já que ele sempre leva o mesmo tempo para inserir um elemento na lista, independente da posição que escolhemos. Já o ArrayList é ideal para quando precisamos recuperar ou alterar dados da lista com frequência já que, diferente do LinkedList que precisa percorrer a lista inteira desde o primeiro elemento até encontrar o elemento que buscamos, o ArrayList consegue acessar um elemento aleatório da lista diretamente sem precisar percorrer a lista.

Na maioria dos casos, você vai acabar utilizando o ArrayList por conta da performance que ele tem durante a iteração das listas. Mas é bom ficar atento, pois caso o ArrayList chegue à sua capacidade máxima que, por padrão, é 10. Ele precisará ser redimensionado, criando uma nova ArrayList com 150% de seu tamanho anterior e copiando todos os elementos da lista antiga para essa nova. Portanto, caso você tenha uma noção de quantos elementos a ArrayList irá armazenar, é recomendado que você defina um tamanho inicial para a ArrayList maior do que 10. Algo como List<Integer> list = new ArrayList<>(100);.

Espero que isso ajude. Existem muito mais detalhes relacionados a implementação dessas listas, mas na prática, esses são os pontos que você deve se atentar na hora de escolher qual implementação utilizar.

Qualquer dúvida é só avisar. Forte abraço e bons estudos!!

É que a mim parece que tanto a inserção/remoção de elementos quanto o acesso direto a determinado item da lista são frequentes em listas. Não consigo imaginar uma aplicação que use listas que não seja necessário as duas tarefas

solução!

Opa Maurício, tranquilo? Por isso é uma questão de eficiência e qual operação será usada com mais frequência, mas cada caso é um caso. Então, dependendo do tamanho da lista, nem o LinkedList será tão útil, apesar de teoricamente ele ser melhor para inserir e remover elementos. Na dúvida, sempre use o ArrayList já que ele dá conta da grande maioria dos casos. LinkedList seria algo para casos mais específicos, principalmente quando precisamos adicionar e remover com frequência.