首頁 >Java >java教程 >為什麼 `List.remove()` 會拋出 `UnsupportedOperationException` ?

為什麼 `List.remove()` 會拋出 `UnsupportedOperationException` ?

Susan Sarandon
Susan Sarandon原創
2024-12-19 18:11:14584瀏覽

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

從清單中刪除元素時出現UnsupportedOperationException

嘗試使用List.remove() 從清單中刪除元素時,您可能會遇到不支援的操作異常。當您在不支援結構修改(例如改變其大小的修改)的清單上呼叫remove()時,會出現此錯誤。

在給定的程式碼中,您使用Arrays.asList(split)建立一個列表,它傳回一個由數組分割支援的固定大小的列表。固定大小的清單不允許您新增或刪除元素,因此在呼叫remove()時會導致UnsupportedOperationException。

要解決此問題,您可以改用LinkedList。 LinkedList支援高效率的元素刪除,並傳回一個可以進行結構修改的清單。下面是修正後的程式碼:

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

此外,程式碼使用 template.split("|") 來分割字串模板。然而,“|”是一個正規表示式元字符,因此您需要將其轉義為“|”將其視為拆分的文字字符。

最後,考慮使用更有效的演算法,透過產生隨機不同索引並使用列表迭代器在單次傳遞中刪除元素。這會將時間複雜度提高到 O(N),而不是目前的 O(N^2)。

以上是為什麼 `List.remove()` 會拋出 `UnsupportedOperationException` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn