Ich habe zwei Fragen. Ich habe hier ein Objekt vom Typ ArrayList
, und in diesem Fall nennen wir es "Car"
.
Ich habe zwei davon gemacht:
%Vor%Ich habe eine Funktion zum Hinzufügen von Objekten zu diesen Auto-Objekten:
%Vor% Ich muss eine Funktion namens sameContents()
haben, die ich car1
aufrufen kann:
übergibt ein Objekt vom Typ ArrayList
und überprüft es mit car1
, um zu sehen, ob sie denselben Inhalt und in derselben Reihenfolge haben.
Ich habe anscheinend alle möglichen Probleme mit diesem Thema. Ich kann die Variable other_car
nicht in einer foreach-Schleife verwenden.
Der zweite Schritt ist transferContents
.
Es heißt wie:
%Vor% Überträgt die Elemente in car2
in car1
und lässt dann car2
leer. Ich kann nicht scheinen, das ArrayList
wieder in einer foreach-Schleife arbeiten zu lassen, was ich denke, dass ich brauche.
Gegeben einige List<T> foo
, foreach Schleifen, z.B.:
sind nur eine Kurzschriftsyntax für dieses Idiom:
%Vor% Um zu überprüfen, ob es mehr Einträge in der Liste gibt, rufen Sie iter.hasNext()
auf, um das nächste Element aufzurufen, rufen Sie iter.next()
auf.
Zwei Listen können ausgeführt werden, indem man zwei Iteratoren beibehält, prüft, ob beide Iteratoren mehr Elemente haben, und dann diese Elemente abrufen. Wir können einige Randbedingungen auf verschiedenen Längenlisten eliminieren, indem wir erkennen, dass verschiedene Längenlisten nicht dieselben Elemente enthalten können (da eine Liste mehr als die andere aufweist).
Aus Ihrer Beschreibung klingt, dass Car
eine Eigenschaft List<String> parts;
enthält, so dass wir eine Lösung wie folgt formulieren können:
Wie für Ihre transferContents
-Methode, haben Sie die richtige Idee, aber Sie können nicht über die Car
iterieren, Sie müssen über die List<String> parts
iterieren. Um einzelne Teile zu entfernen, können Sie die Methode remove()
verwenden, die wie die Methode add
aufgerufen wird. Um alle Elemente zu entfernen, können Sie clear()
Das zusammensetzen:
%Vor%Ihr Auto sollte nicht eine Array-Liste sein, aber eine . Z.B. etwas wie das:
%Vor% Dann kann Ihre sameContents
-Methode einfach die Methode .equals()
der Listen aufrufen, um den Vergleich durchzuführen:
Verwenden Sie für die Übertragung von Teilen aus einem anderen Fahrzeug ebenfalls die Methoden der Listen, um add
die Teile zu Ihrer Liste hinzuzufügen, und dann clear
die andere Liste.