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));
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("\|")
Optimiert Algorithmus
Anstatt immer wieder „remove()“ aufzurufen, sollten Sie einen effizienteren Algorithmus in Betracht ziehen:
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!