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

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

Susan Sarandon
發布: 2024-12-19 18:11:14
原創
584 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板