日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 并发修改_理解和解决Java并发修改异常ConcurrentModificationException

發布時間:2025/4/16 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 并发修改_理解和解决Java并发修改异常ConcurrentModificationException 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

your name.jpg

關鍵字: Java Exception

不知讀者在Java開發的過程中有沒有遇到類似的異常信息 Exception in thread "main" java.util.ConcurrentModificationException, 下面小編簡單介紹異常原因以及這種異常的改進方法,內容很簡單,有什么問題還望指正。

假設我們要實現這樣一個例子: 判斷集合里面有沒有"world"這個元素,如果有,就添加一個"javaee"元素

出現異常的代碼如下:

import java.util.ArrayList;

import java.util.Iterator;

public class Test {

public static void main(String[] args) {

ArrayList array = new ArrayList();

// 創建并添加元素

array.add("hello");

array.add("world");

array.add("java");

Iterator it = array.iterator();

while (it.hasNext()) {

String s = (String) it.next();

if ("world".equals(s)) {

array.add("javaee");

}

}

}

}

1.異常解釋

ConcurrentModificationException:當方法檢測到對象的并發修改,但不允許這種修改時,拋出此異常。

產生的原因:

迭代器是依賴于集合而存在的,在判斷成功后,集合的中新添加了元素,而迭代器卻不知道,所以就報錯了,這個錯叫并發修改異常。

簡單描述就是:迭代器遍歷元素的時候,通過集合是不能修改元素的。

如何解決呢?

A:迭代器迭代元素,迭代器修改元素

B:集合遍歷元素,集合修改元素(普通for)

2.下面用兩種方法去解決這個異常

import java.util.ArrayList;

public class Test {

public static void main(String[] args) {

ArrayList array = new ArrayList();

// 創建并添加元素

array.add("hello");

array.add("world");

array.add("java");

// 方式1:迭代器迭代元素,迭代器修改元素

// 而Iterator迭代器卻沒有添加功能,所以我們使用其子接口ListIterator

// ListIterator lit = array.listIterator();

// while (lit.hasNext()) {

// String s = (String) lit.next();

// if ("world".equals(s)) {

// lit.add("javaee");

// }

// }

// System.out.println("list1:" + array);

// 方式2:集合遍歷元素,集合修改元素(普通for)

for (int x = 0; x < array.size(); x++) {

String s = (String) array.get(x);

if ("world".equals(s)) {

array.add("javaee");

}

}

System.out.println("list2:" + array);

// 方式3:增強for循環

// 增強for循環寫的話會報同樣的錯誤,因為它本身就是用來替代迭代器的

// for (String s : array) {

// if ("world".equals(s)) {

// array.add("javaee");

// }

// }

// System.out.println("list3:" + array);

}

}

總結

以上是生活随笔為你收集整理的java 并发修改_理解和解决Java并发修改异常ConcurrentModificationException的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。