list執行remove和add方法時,報java.util.ConcurrentModificationException的原因
//AbstractCollection和List都繼承了Collection
protected transient int modCount = 0;
private class Itr implements Iterator<E> { //內部類Itr
int cursor = 0;
int lastRet = -1;
int expectedModCount = modCount;
public boolean hasNext() {
return cursor != size();
}
public E next() {
checkForComodification(); //特別注意這個方法
try {
E next = get(cursor);
lastRet = cursor++;
return next;
} catch(IndexOutOfBoundsException e) {
checkForComodification();
throw new NoSuchElementException();
}
}
public void remove() {
if (lastRet == -1)
throw new IllegalStateException();
checkForComodification();
try {
AbstractList.this.remove(lastRet); //執行remove物件的操作
if (lastRet < cursor)
cursor--;
lastRet = -1;
expectedModCount = modCount; //重新設定了expectedModCount的值,避免了ConcurrentModificationException的產生
} catch(IndexOutOfBoundsException e) {
throw new ConcurrentModificationException();
}
}
final void checkForComodification() {
if (modCount != expectedModCount) //當expectedModCount和modCount不相等時,就丟擲ConcurrentModificationException
throw new ConcurrentModificationException();
}
}
}
相關推薦
list執行remove和add方法時,報java.util.ConcurrentModificationException的原因
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { //AbstractCollection和List都繼承了Collection protect
為什麽使用 Arrays.asList()得到的集合,使用remove( )和 add( )方法會拋出unsupportedoperationexception(不支持操作異常)
操作 err move lan 16px exceptio operation amp span 這是由於: Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。 Arrays$ArrayList
List使用add方法時,生成的list是最後加入的資料的重複
近來專案中用到list的add方法,執行報錯,新增重複項,debug以後發現生成的list中,都是最後一條資料的重複。後來發現只需要改一句就可以避免這個錯誤。 MachineBean machineBean = new MachineBean(); Li
【Java】java執行jar時,報 java.lang.UnsupportedClassVersionError
問題現象: java執行jar時,報 java.lang.UnsupportedClassVersionError java -jar main.jar -h 192.168.221.171 -u tdmp -p tdmp -d orcl -t tdmpta
在tomcat上應用web時,報java.lang.NullPointerException錯誤的解決方法
Java程式碼: exception org.apache.jasper.JasperException: java.lang.NullPointerException org.apache.jasper.servlet.JspServletWr
java專案執行中出現記憶體洩漏問題,報java.lang.OutOfMemoryError: PermGen space
一開始我以為是記憶體不足導致的,但是檢視伺服器記憶體還有很多。所以不是記憶體問題。 然後查到java執行時涉及到資源分配的幾個重要引數: Xss:每個執行緒的stack大小(棧) Xmx:JAVA HEAP的最大值、預設為實體記憶體的1/4 Xms:JAVA HE
遍歷集合時出現異常:java.util.ConcurrentModificationException的處理方案
0.出現異常的原因:集合在迭代過程中對其中的元素進行修改操作。以下是解決方法1.java遍歷Map時,對其元素進行刪除package net.nie.test; import java.util.HashMap; import java.util.Iterator; i
Queue介面分析:add和offer區別,remove和poll方法到底啥區別
往佇列中新增元素有兩個方法,分佈是add和offer方法,兩者的入參和返回值都一樣,或許很多同學都奇怪,為什麼,要有這兩個功能類似(都是新增元素),但方法名不一樣的方法,看看原始碼的註釋 以下為Queue介面中方法定義: ``` public interface Queue<E
一個類有兩個方法,其中一個是同步的,另一個是非同步的; 現在又兩個執行緒A和B,請問:當執行緒A訪問此類的同步方法時,執行緒B是否能訪問此類的非同步方法?
一個類有兩個方法,其中一個是同步的,另一個是非同步的;現在又兩個執行緒A和B,請問:當執行緒A訪問此類的同步方法時,執行緒B是否能訪問此類的非同步方法? 答案:可以 驗證 package com.my.test2; public class ClassA { public syn
詳講:C#快速匯出多個sheet到excel的兩種方法(Cell和Range方法), 解決了(匯入時外部表不是預期的格式)
C# 匯出的表載入時報錯:外部表不是預期的格式。的解決方案 在網絡卡找了一些Excel匯出的方法,大部分能匯出,但時不能將匯出的Excel匯入。總是報:外部表不是預期的格式 找了好久終於找到了解決方案。 這是本人整理修改後的的可以實現匯出匯入的方法。供大家學習參考,方法就是用一個沒問題的
extjs 迴圈執行多個非同步請求時,引數和後臺以及相關問題和衍生問題的處理
在Extjs中,非同步請求的寫法: Ext.Ajax.request({ url: '***.action', //async: false, params: { p1: v1, p2: v2 ... }, success: function(resp
關於執行PI和wordcount的map0%,reduce0%問題解決方法
記得:沒金剛鑽別攬瓷器活!當然怎麼說呢。。4個site.xml檔案配置別搞的太高大上,用預設的就好了,這樣就不會導致你機器尤其是master節點卡在map0%和reduce0%了。。。。為了明白這問題,一搞這問題又是一天啊。。。我的電腦配置:3臺騰訊雲:1核2G,50G;以下
RadioGroup呼叫check(id)方法時,onCheckedChanged方法被執行多次解決辦法
RadioGroup bottomMenuBar = (RadioGroup) findViewById(R.id.bottomMenuBar); bottomMenuBar.setOnCheckedChangeListener(this); bottomMenuBar.c
mysql執行大量的操作時,報無法連接數據庫的錯誤
mysql執行大量的操作時 報無法連接數據庫的錯誤 問題:mysql執行大量的插敘操作時,報無法連接數據庫的錯誤,錯誤詳情如下:Fatal error: Uncaught exception ‘PDOException‘ with message ‘SQLSTATE[HY000] [2003] Can
運行用例時,報錯Unknow Error:Element xxx is not clickable……的解決方法
cut 處理 ebe 將他 最好 executor tro path img 通常這種情況是由於在點擊該元素時,js更換了元素屬性造成的。 所以可以采用js的方式進行處理 方法如下: WebDriver driver = new FirefoxDriver(); Web
java基礎 靜態 static 問在多態中,子類靜態方法覆蓋父類靜態方法時,父類引用調用的是哪個方法?
xtend java pos main 靜態方法 show extends ava pri 多態 package com.swift.jiekou; public class Jicheng_Tuotai_jingtai_diaoyong { publ
tcp連接時,BROKEN PIPE錯誤的原因以及解決方法
tcp 技術 sizeof com http 發送消息 spl 系統 alt 問題: 寫了一個server和一個client,UNIX套接字的,server不斷接收消息並打印出來,client是一個交互程序,輸入一個消息回車發送,接著又可以輸入消息。出問題了:當server
解決windows下python2和python3共存時,pip失效
fat ML creat htm -- error 安裝 .exe launch 使用pip安裝時報錯, pip install SendKeysFatal error in launcher: Unable to create process using ‘"c:\lib
安裝oracle 11g時,報啟動服務出現錯誤,找不到OracleMTSRecoveryService的解決方法
是否 卸載 名稱 window7 ntc oca 高級 很多 bho 很多人在安裝orcl數據庫時,出現很多報錯,我也不例外,因上次數據庫出現問題,無法修復,只能從新安裝,無奈的是,安裝時報啟動服務出現錯誤,找不到OracleMTSRecoveryService錯MMP,心
jenkins 部署 並執行npm run dev 專案時,execute shell自動結束程序問題
使用 jenkins 部署 vue (npm run dev)專案時,部署狀態是顯示部署成功,但是服務沒有成功啟動,在做程序服務監控的時候發現,jenkins部署時候服務也啟動成功了,但是jenkins部署成功後 自動kill殺死或結束該程序和該程序的衍生的程序,那麼就讓jenkins不