首頁 >Java >java教程 >為什麼從清單中刪除元素會拋出 UnsupportedOperationException?

為什麼從清單中刪除元素會拋出 UnsupportedOperationException?

Susan Sarandon
Susan Sarandon原創
2024-12-30 21:51:10495瀏覽

Why Does Removing Elements from a List Throw an UnsupportedOperationException?

UnsupportedOperationException: 從清單中刪除元素

當嘗試使用list.remove(index) 從清單中刪除元素時,您可以遇到UnsupportedOperationException。此錯誤源自於使用 Arrays.asList() 傳回的固定大小清單。

Arrays.asList() 傳回固定大小列表

陣列.asList() 建立一個由給定陣列支援的清單。此清單是不可變的,不支援新增或刪除元素等結構修改。

修正:

要解決此問題,請使用允許刪除的可變清單實作。例如,您可以使用 LinkedList。

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

使用正規表示式分割

split() 方法與正規表示式一起使用來分割字串。管道字符 (|) 是一個正規表示式元字符,用作文字時應進行轉義。

修正:

要在文字管道字元上拆分,請將其轉義使用雙反斜線。

template.split("\|")

最佳化演算法

不要重複呼叫remove(),考慮一個更有效率的演算法:

  1. 產生00到list.size()範圍內的隨機數字數組- 1.
  2. 按升序對數字進行排序。
  3. 建立另一個列表並在迭代列表的同時迭代排序後的數字。
  4. 當排序清單中目前數字的索引與清單中元素的索引相符時,對清單呼叫remove()並刪除該元素。

演算法運行時間為 O(N),其中 N 是列表的大小,這比原始方法要快得多。

以上是為什麼從清單中刪除元素會拋出 UnsupportedOperationException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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