Lista Encadeada Java

Pessoal como faço só os 3 primeiro valores de uma lista encadeada?
e será que não tem uma forma de pegar os valores que eu quero, pois preciso pegar o primeiro o quarto e o sétimo valor de uma lista encadeada de 9 valores. Alguém poderia me ajudar? desde já agradeço!

List<Object> listaLigada = new LinkedList<Object>();
for(int indice = 0; indice < 3; indice++){
    Object objeto = listaLigada.get(indice);
}
Object primeiroValor = suaLista.get(0);
Object quartoValor = suaLista.get(3);
Object setimoValor = suaLista.get(6);

Espero que tenha ajudado.

1 curtida

Esqueci de mencionar mas é uma lista encadeada com nós e não array list mas mesmo assim obrigado por tentar ajudar!!!

Ele implementou LinkedList, não ArrayList.

Mas a LinkedList também tem acesso por índice, e esse código que o @Aporo colocou funciona. A diferença é que a complexidade computacional do acesso por índice é O(n), diferente de uma ArrayList que tem complexidade constante O(1).

Nesse caso, o código dele faz 3 acessos à lista. Se você tem uma lista com 1 bilhão de nós, e quer os primeiros 10 milhões, a lista vai ser percorrida 10 milhões de vezes, e isso não é interessante.

O que você pode fazer é usar um Iterator e só avançar ele 3 vezes (ou quantos primeiros elementos você deseja pegar).

Outra solução é criar uma lista própria (herda de LinkedList) que só adiciona um método novo: List<E> getFirstNElements(int n). Aí você implementa esse método de forma a retornar uma lista com os primeiros n elementos, e só percorre uma vez (com um iterator).

1 curtida