Sag mal, ich habe zwei Verweise auf ein Objekt in einem LinkedList List1:Iterate durch verlinkte Liste in Java
LinkedList<Object> List1 = new LinkedList<Object>();
Object first;
Object last;
Ich will nicht den Listenindex dieser Objekte verwenden, um sie zu beziehen, weil die Länge meiner Liste ändert sich. Ich denke, das würde nicht funktionieren. Nun möchte ich die durch die erste und letzte definierte Unterliste durchlaufen, wobei zuerst der Anfang der Unterliste in Liste1 definiert wird und zuletzt das Ende der Unterliste in Liste1 definiert wird.
Mein Problem ist jetzt, dass AFAIK kann ich nicht etwas tun, wie
while (current != last){
// do something
current = someiterator.next();
}
, weil ich zwei Objekte bin vergleichen, die in allgemeinem Willen Punkt zu verschiedenen Orten. Darüber hinaus kann ich die Referenzen auch nicht nach ihrem Wert vergleichen, da in der Liste ein Wert mehrmals vorkommen kann. Also, wie kann ich durch diese Unterliste von List1 iterieren?
okay, also wenn ich sowas mache wie last = List1.get (2) und später später den Vergleich mit einem Iterator, wie "while (current! = Last)", dann sollte der Vergleich die zwei Objekte vergleichen, die ich wirklich möchte vergleichen? – ptikobj
Ich glaube, da war etwas, das ich nicht realisiert habe: Wenn Sie etwas tun wie Objekt a = b; dann wird ein _reference_ zu Objekt b halten, oder? und da a den Verweis auf b enthält, kann ich etwas wie während (a! = Strom) tun. Zuerst dachte ich, dass a = b das _object_ oder den _value_ von b zu a zuweisen würde. Der Wert wird jedoch nur a zugewiesen, wenn b ein Primitiv ist. Und wenn b ein Objekt ist, dann wird a nur die Referenz von b enthalten. Danke für all deine Antworten, ich denke ich habe es jetzt bekommen. – ptikobj
@ptikobj: Das Objekt hat eigentlich keinen Namen. Weder "a" noch "b" ist das Objekt. Stattdessen enthalten * beide * Referenzen auf das Objekt und haben daher den gleichen Wert im Vergleich zu '==' –