Heim > Java > javaLernprogramm > Warum löst das Entfernen von Elementen aus einer Liste eine UnsupportedOperationException aus?

Warum löst das Entfernen von Elementen aus einer Liste eine UnsupportedOperationException aus?

Susan Sarandon
Freigeben: 2024-12-30 21:51:10
Original
512 Leute haben es durchsucht

Why Does Removing Elements from a List Throw an UnsupportedOperationException?

UnsupportedOperationException: Element aus einer Liste entfernen

Wenn Sie versuchen, ein Element mit list.remove(index) aus einer Liste zu entfernen, kann dies passieren Es kommt zu einer UnsupportedOperationException. Dieser Fehler ist auf die Verwendung einer Liste fester Größe zurückzuführen, die von Arrays.asList() zurückgegeben wird.

Arrays.asList() Gibt eine Liste fester Größe

Arrays zurück .asList() erstellt eine Liste, die durch das angegebene Array unterstützt wird. Diese Liste ist unveränderlich und unterstützt keine strukturellen Änderungen wie das Hinzufügen oder Entfernen von Elementen.

Fix:

Um dieses Problem zu beheben, verwenden Sie eine veränderbare Listenimplementierung, die Entfernungen ermöglicht. Sie können beispielsweise eine LinkedList verwenden.

List<String> list = new LinkedList<>(Arrays.asList(split));
Nach dem Login kopieren

Aufteilen mit regulären Ausdrücken

Die Methode split() wird mit regulären Ausdrücken verwendet, um eine Zeichenfolge aufzuteilen. Das Pipe-Zeichen (|) ist ein Regex-Metazeichen, das maskiert werden sollte, wenn es als Literal verwendet wird.

Fix:

Um ein Literal-Pipe-Zeichen aufzuteilen, maskieren Sie es mit doppelten Backslashes.

template.split("\|")
Nach dem Login kopieren

Optimiert Algorithmus

Anstatt immer wieder „remove()“ aufzurufen, sollten Sie einen effizienteren Algorithmus in Betracht ziehen:

  1. Generieren Sie ein zufälliges Array von Zahlen im Bereich von 0 bis list.size() - 1.
  2. Sortieren Sie die Zahlen in aufsteigender Reihenfolge.
  3. Erstellen Sie eine weitere Liste und durchlaufen Sie die Liste währenddessen Durchlaufen der sortierten Zahlen.
  4. Wenn der Index der aktuellen Zahl in der sortierten Liste mit dem Index des Elements in der Liste übereinstimmt, rufen Sie „remove()“ für die Liste auf und entfernen Sie das Element.

Dieser Algorithmus läuft in O(N)-Zeit, wobei N die Größe der Liste ist, was deutlich schneller ist als der ursprüngliche Ansatz.

Das obige ist der detaillierte Inhalt vonWarum löst das Entfernen von Elementen aus einer Liste eine UnsupportedOperationException aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage