Iteration durch ArrayLists

7

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:

%Vor%

übergibt ein Objekt vom Typ ArrayList und überprüft es mit car1 , um zu sehen, ob sie denselben Inhalt und in derselben Reihenfolge haben.

%Vor%

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.

%Vor%     
Drew Bartlett 19.09.2011, 03:31
quelle

3 Antworten

22

Gegeben einige List<T> foo , foreach Schleifen, z.B.:

%Vor%

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:

%Vor%

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()

aufrufen

Das zusammensetzen:

%Vor%     
Mark Elliot 19.09.2011, 03:37
quelle
0

Sie können sich darauf verlassen, dass die java api alles tut, was Sie brauchen. Die ArrayList gleicht der Methodenüberprüfung der Reihenfolge beim Vergleich zweier Listen. Sie können die Methoden removeAll () und addAll () verwenden, um Inhalte zu übertragen.

%Vor%     
shams 19.09.2011 04:03
quelle
0

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:

%Vor%

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.

    
Paŭlo Ebermann 19.09.2011 15:19
quelle

Tags und Links