Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich möchte den BFS-Algorithmus programmieren und will darin listen hin und hertauschen. Richtig ausgedrückt:
Ich habe zwei Listen(LinkedList).
1.Zu Beginn fülle ich die Liste0 mit Elementen und bearbeite diese. Bei dieser Bearbeitung fallen neue Elemente einer weiteren Schicht an, welche ich in liste1 speicher.
2. Im zweiten Schritt möchte ich die Elemente neuen Elemente aus der list1 wie oben bearbeiten und es fallen wieder Ellemente einer weiteren Schicht an. Um das gechickt zu implementieren, möchte ich nach dem ersten Durchlauf die neuen Elemente aus der list1 in die list0 kopieren, list1 leeren und dann diesen Schritt nach vorlage vom ersten Schritt durchführen.
Wie kann ich aber alle Elemente aus der list1 in die list0 kopieren und dann die list1 leeren?
Habe es mal mit
Java:
list = list1.subList(0, list1.size());
list1.clear();
versucht, aber ist ja klar, das das nicht funktioniert.
hmm, die sache mit cloneable hab ich mir auch überlegt. Aber das ist für meine Implementierung warscheinlich zu teuer. Da wird ja dann Jedes Element geclont...
Ich möchte eigentlich nur die referenzen zu den listen umlegen. so kann man denke ich am effizientesten tauschen.
Häh? Hab' ich jetzt irgendwas falsch verstanden? ???:L
Entweder ganz direkt
Java:
List current = listWithFirstElement();
while (!current.isEmpty())
{
List next = new List();
computeSomeStuffAndFill(next);
current = next;
}
oder, wenn's sein muss (wobei ich keinen Grund dafür sehe)
Java:
List current = listWithFirstElement();
List next = new List();
while (!current.isEmpty())
{
computeSomeStuffAndFill(next);
current.clear();
current.addAll(next);
next.clear();
}
Kannst du in deiner Funktion, die die Liste bearbeitet, nicht jeweils eine neue Listeninstanz erzeugen fülle, und deine Methode mit der neuen Listeninstanz rekursiv aufrufen? Dann brauchst du nichts umkopieren oder ähnliches, sonder nur eine vernünftige Abbruchbedingung. Nur so als Idee.