首頁 > Java > java教程 > 主體

迭代和修改ArrayList時如何避免ConcurrentModificationException?

Patricia Arquette
發布: 2024-10-30 08:21:28
原創
752 人瀏覽過

How to Avoid a ConcurrentModificationException When Iterating and Modifying an ArrayList?

同時遍歷(迭代)和修改 ArrayList 時,會發生 ConcurrentModificationException。本文探討了處理此異常的最佳實踐,概述了替代方法。

避免並發修改異常

為了防止發生異常,有兩個選項可用:

  1. 建立要刪除的值列表:迭代時,將需要刪除的值加入單獨的清單。迭代完成後,對原始清單呼叫“removeAll”方法。
  2. 使用Iterator的Remove方法:不要直接在循環內修改ArrayList,而是使用「remove」方法迭代器本身。這就需要使用傳統的 for 循環,而不是增強的 for 迴圈。

Iterator 的移除方法範例:

考慮移除某個長度的字串的場景ArrayList 中大於5 的值:

<code class="java">List<String> list = new ArrayList<>();
...
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
    String value = iterator.next();
    if (value.length() > 5) {
        iterator.remove();
    }
}</code>
登入後複製

在此範例中,迭代器的「刪除」方法用於在迭代原始清單時安全地修改原始清單。

以上是迭代和修改ArrayList時如何避免ConcurrentModificationException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!