java – een gekoppelde lijst herhalen

als ik een for-each-lus gebruik op een gekoppelde lijst in java,
is het gegarandeerd dat ik de elementen in de bestelling zal herhalen?
waarin ze in de lijst voorkomen?


Antwoord 1, autoriteit 100%

Gelinkte lijst werkt gegarandeerd in de juiste volgorde.

Van de documentatie

Een geordende collectie (ook bekend als a
volgorde). De gebruiker van deze interface
heeft nauwkeurige controle over waar in de
lijst elk element wordt ingevoegd. De
gebruiker heeft toegang tot elementen door hun
integer index (positie in de lijst),
en zoek naar elementen in de lijst.

iterator()
Retourneert een iterator over de elementen in deze lijst in de juiste volgorde.


Antwoord 2, autoriteit 97%

Ik heb 5 manieren gevonden om een gelinkte lijst in Java te herhalen (inclusief de Java 8-manier):

  1. For Loop
  2. Verbeterde For Loop
  3. Terwijl Loop
  4. Iterator
  5. Collecties stream() util (Java8)

For-lus

LinkedList<String> linkedList = new LinkedList<>();
System.out.println("==> For Loop Example.");
for (int i = 0; i < linkedList.size(); i++) {
    System.out.println(linkedList.get(i));
}

Verbeterde for-lus

for (String temp : linkedList) {
    System.out.println(temp);
}

Terwijl-lus

int i = 0;
while (i < linkedList.size()) {
    System.out.println(linkedList.get(i));
    i++;
}

Iterator

Iterator<String> iterator = linkedList.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next()); 
}

verzamelstroom() util (Java 8)

linkedList.forEach((temp) -> {
    System.out.println(temp);
});

Eén ding moet worden opgemerkt is dat de looptijd van For Loopof While LoopO(n vierkant) is omdat get(i)bewerking kost O(n) tijd(zie dit voor details). De andere 3 manieren nemen lineaire tijd in beslag en presteren beter.


Antwoord 3, autoriteit 56%

Zoals de definitie van Linkedlist zegt, is het een reeks en je krijgt gegarandeerd de elementen op orde.

bijvoorbeeld:

import java.util.LinkedList;
public class ForEachDemonstrater {
  public static void main(String args[]) {
    LinkedList<Character> pl = new LinkedList<Character>();
    pl.add('j');
    pl.add('a');
    pl.add('v');
    pl.add('a');
    for (char s : pl)
      System.out.print(s+"->");
  }
}

Antwoord 4, autoriteit 31%

Gelinkte lijst garandeert sequentiële volgorde.

Gebruik linkedList.get(i)niet, vooral niet in een sequentiële lus, omdat dit het doel van een gekoppelde lijst tenietdoet en inefficiënte code zal zijn.

Gebruik ListIterator

   ListIterator<Object> iterator = myLinkedList.listIterator();
    while( iterator.hasNext()) {
        System.out.println(iterator.next());
    }

Antwoord 5

Elke java.util.List-implementatie is vereist om de volgorde te behouden, dus u gebruikt ofwel ArrayList, LinkedList, Vector, enz. Elk van hen zijn geordende collecties en elk van hen behoudt de volgorde van invoeging (zie http://download.oracle.com/javase/1.4.2 /docs/api/java/util/List.html)


Antwoord 6

iterate LinkedList by using iterator
LinkedList<String> linkedList = new LinkedList<String>();
linkedList.add(“Mumbai”);
linkedList.add(“Delhi”);
linkedList.add(“Noida”);
linkedList.add(“Gao”);
linkedList.add(“Patna”);
Iterator<String>  itr = linkedList.iterator();
 while (itr.hasNext()) {
 System.out.println(“Element is =”+itr.next());
 }

Referentie: Java Linkedlist-voorbeelden

Other episodes