Heim >Java >javaLernprogramm >Warum wirft „List.remove()' eine „UnsupportedOperationException' aus?

Warum wirft „List.remove()' eine „UnsupportedOperationException' aus?

Susan Sarandon
Susan SarandonOriginal
2024-12-19 18:11:14584Durchsuche

Why Does `List.remove()` Throw an `UnsupportedOperationException`?

UnsupportedOperationException While Removing Element from List

Beim Versuch, ein Element aus einer Liste mit List.remove() zu entfernen, kann es zu einer Fehlermeldung kommen UnsupportedOperationException. Dieser Fehler tritt auf, wenn Sie „remove()“ für eine Liste aufrufen, die keine strukturellen Änderungen unterstützt, z. B. Änderungen, die ihre Größe ändern.

Im angegebenen Code erstellen Sie eine Liste mit Arrays.asList(split), Dies gibt eine Liste fester Größe zurück, die durch die Array-Aufteilung unterstützt wird. Bei Listen mit fester Größe können Sie keine Elemente hinzufügen oder entfernen, was zur UnsupportedOperationException führt, wenn Sie „remove()“ aufrufen.

Um dieses Problem zu beheben, können Sie stattdessen eine LinkedList verwenden. LinkedList unterstützt das effiziente Entfernen von Elementen und gibt eine Liste zurück, die strukturell geändert werden kann. Hier ist der korrigierte Code:

List<String> list = new LinkedList<>(Arrays.asList(split));

Zusätzlich verwendet der Code template.split("|"), um die Zeichenfolgenvorlage zu teilen. Allerdings ist „|“ ist ein Regex-Metazeichen, daher müssen Sie es als „|“ maskieren. damit es als Literalzeichen für die Aufteilung behandelt wird.

Zuletzt sollten Sie die Verwendung eines effizienteren Algorithmus in Betracht ziehen, indem Sie zufällige eindeutige Indizes generieren und einen Listeniterator verwenden, um Elemente in einem einzigen Durchgang zu entfernen. Dadurch wird die Zeitkomplexität auf O(N) anstelle des aktuellen O(N^2) verbessert.

Das obige ist der detaillierte Inhalt vonWarum wirft „List.remove()' eine „UnsupportedOperationException' aus?. 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