Heim  >  Artikel  >  Java  >  Können Sie eine Sammlung ändern, während Sie sie durchlaufen?

Können Sie eine Sammlung ändern, während Sie sie durchlaufen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 10:49:30717Durchsuche

Can You Modify a Collection While Iterating Through It?

Iterative Sammlungsänderung: Ist das möglich?

Beim Durchlaufen einer Sammlung kann es wünschenswert sein, ihr neue Elemente hinzuzufügen. Im Java-Tutorial heißt es jedoch, dass die Verwendung von Iteratoren der einzig sichere Ansatz für jede Sammlungsänderung während der Iteration ist.

Einschränkungen der iteratorbasierten Änderung

Der Grund für diese Einschränkung liegt im Design von Iteratoren. Sie behalten einen Verweis auf das aktuelle Element und seine Position innerhalb der Sammlung bei. Wenn die Sammlung auf andere Weise als durch die Methoden des Iterators geändert wird (z. B. direkter Zugriff auf und Änderung ihrer Struktur), kann die Integrität des Iterators beeinträchtigt werden, was zu unerwartetem Verhalten führt.

Alternativer Ansatz: Warteschlange- Basierende Iteration

Um diese Einschränkung beim Hinzufügen von Elementen während der Iteration zu überwinden, sollten Sie stattdessen die Verwendung einer Warteschlange in Betracht ziehen. Eine Warteschlange ist eine FIFO-Datenstruktur (First-In, First-Out), die eine lineare Reihenfolge der Elemente beibehält. Dieser Ansatz bietet eine unkomplizierte Lösung:

  1. Füllen Sie die Warteschlange mit den Elementen, die Sie zunächst durchlaufen möchten.
  2. Obwohl die Warteschlange nicht leer ist:
    a. Entfernen Sie das nächste Element vom Anfang der Warteschlange und verarbeiten Sie es.
    b. Wenn das verarbeitete Element die angegebene Bedingung erfüllt, stellen Sie alle zusätzlichen Elemente hinten in die Warteschlange ein.

Mit diesem Ansatz können Sie der Sammlung Elemente hinzufügen und gleichzeitig sicherstellen, dass der Iterator (die Warteschlange in in diesem Fall) bleibt gültig und die Iteration wird nahtlos fortgesetzt.

Das obige ist der detaillierte Inhalt vonKönnen Sie eine Sammlung ändern, während Sie sie durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn