3

LinkedList vs Arraylist

#Estrutura de dados
Pedro Gomes
Pedro Gomes

No clima da Community Week 1.0, resolvi criar meu primeiro artigo sobre algo que aconteceu comigo.


Ao fazer um bootcamp aqui na DIO, resolvi um dos desafios, e, na hora de entregar, ocorria estouro de tempo (timeout) com testes longos. Conversando com a comunidade da DIO no discord, percebi que estava usando arrayList. Me orientaram então a utilizar linkedList para fazer o desafio. Com isso, o exercício passou e eu pude prosseguir para o próximo desafio.


Por que deu certo com linkedList? É o que fui tentar descobrir.


LinkedList:

https://imgur.com/IzKHaXF


ArrayList:

https://imgur.com/qFCDwNg


LinkedList é uma lista encadeada (grava o sucessor e, caso seja duplamente encadeada, também antecessor). Já o arrayList, como o próprio nome sugere, é um Array, uma estrutura indexada(possui índice) e com tamanho definido. A questão que faz a diferença é que, em uma lista encadeada, para inserir ou retirar um elemento, basta pegar o elemento anterior e apontar para o sucessor do elemento que pretendemos retirar, conforme se vê na figura acima. Muito simples.


No caso do arrayList, é necessário fazer todo um remanejamento, criando até mesmo um novo vetor caso ele esteja cheio e realocando todos os elementos. Muito mais complexo.

Arraylist é mais rápido para busca caso se saiba o índice(posição) do elemento. Já linkedList não possui índice, sendo necessário percorrer todos os elementos para se chegar ao elemento desejado. Caso tenha muitos elementos a adicionar/retirar, o linkedList acaba sendo superior ao arrayList.

Assim sendo, se sua estrutura tiver mais necessidade de adicionar/retirar elementos, use linkedList. Caso a maior necessidade seja acessar um elemento cuja posição seja conhecida, use arrayList.


Obs: Não consegui colocar as imagens do linkedList e arrayList para serem exibidas no post. Se alguém souber, por favor, deixe nos comentários.


E você? Conhece algum outro caso de uso desses tipos de listas? Já criou alguma aplicação em que pôde perceber a diferença no tempo de execução entre eles? Deixe nos comentários para enriquecer o tópico e ajudar ainda mais a comunidade.

0
46

Comentários (0)

Desenvolvedor Web, formado em Gestão da Tecnologia da Informação, com Certificado Profissional de Suporte de TI da Google e Microsoft Azure Fundamentals AZ-900, curioso e amante da programação.

Brasil