Boa Tarde Galera!
Alguém pode me explicar porque uma arrayList é mais rápida que uma linkedList quando o assunto é percorrer?
E também porque uma linkedList é mais rápida que uma arrayList quando o assunto é inserir e remover?
Desde já agradeço
Boa Tarde Galera!
Alguém pode me explicar porque uma arrayList é mais rápida que uma linkedList quando o assunto é percorrer?
E também porque uma linkedList é mais rápida que uma arrayList quando o assunto é inserir e remover?
Desde já agradeço
Isso não é verdade. Se você fizer acesso aleatório (ex: lista.get(i)), daí sim LinkedList é muito lerdo. Mas se você usar o Iterator, eles empatam.
ArrayList usa um array por baixo. Se você for inserir um elemento no meio do array, terá que empurrar todos os outros que ficam atrás uma posição. Se for retirar um elemento do meio, terá que puxar os que estão atrás uma posição. Isso é algo computacionalmente custoso.
Por outro lado, LinkedList é como se fosse uma fila de pessoas. Se alguém furar a fila na metade, quem está distante seja para frente ou para trás não percebe. Se alguém que está no meio sai da fila, o mesmo acontece.
linkedList nao usa uma array por baixo tmb? :shock: Qual a principal diferenca das duas?
class No<E> {
private No<E> anterior;
private No<E> proximo;
private E elemento;
// Um monte de métodos.
}
class MeuLinkedList<E> implements List<E> {
private No<E> primeiro;
private int tamanho;
// Um monte de métodos.
}