1. 程式人生 > >Java_遍歷集合過程中刪除集合元素報錯的解決方案

Java_遍歷集合過程中刪除集合元素報錯的解決方案

問題描述:使用增強for迴圈遍歷集合,如果遍歷過程中去除第一個或者最後一個元素會報錯,去除中間的元素不會報錯:Exception in thread “main” java.util.ConcurrentModificationException

不知道這個是怎麼回事,好像和指標有關吧(暫時不瞭解),為了避免此類問題的出現,可以使用迭代器或者

普通for迴圈來解決。

1.使用迭代器

程式碼舉例:

public static void removeElement(List<Integer> list) {

    Iterator<Integer> it = list.iterator();
    while(it.hasNext()) {
        Integer id = it.next();
        if (id == 2) {
            it.remove();
        }
    }
}

2.使用普通for迴圈,如果刪除需要i–

public static void removeElement(List list) {

int len = list.size();
for(int i = 0; i < len; i++) {
    if(list.get(i) == 2) {
        list.remove(i);
        i--;
    }
}

}

相關推薦

Java_集合過程刪除集合元素解決方案

問題描述:使用增強for迴圈遍歷集合,如果遍歷過程中去除第一個或者最後一個元素會報錯,去除中間的元素不會報錯:Exception in thread “main” java.util.ConcurrentModificationException 不知道這個是

Bootstrap安裝過程,chrome控制檯解決辦法

今天初次使用Bootstrap,安裝好所有預設的樣式以及JS檔案,執行之後發現Chrome控制檯報錯Uncaught TypeError: Cannot read property 'fn' of undefined  1 <!DOCTYPE html> 2 <html

集合過程刪除集合元素問題

集合遍歷過程中如何刪除集合元素,,這個問題應該很簡單,用迭代器即可; public static void main(String[] args) { List<String> strList = new ArrayList<String

【搬磚系列】如何在List時安全刪除集合元素

  1 public void testIterRemove() { 2 List l1 = new ArrayList(Arrays.asList(1, 2, 3, 4, 5)); 3 Iterator<Integer> i

c標籤取maplist集合的物件屬性值

今天寫批量列印功能時,後臺傳到前端的資料是map集合,以前沒用過,取值時出現了問題,在這裡記錄一下,備忘和複習時看: 1.前端主要部分如下: <body> <c:forEach var="fee" items="${map[\"EtImportFees\

JSEL表示式集合

前言:在我的專案裡有這麼一個情況,後臺直接session.setAttribute()儲存了一個物件,此物件內部有一個集合,前端JSP處理的方法正常情況下就是直接使用EL表示式即可。但是如果在JS中需要使用這個集合中的值,那應該怎麼處理呢? 需求:JS中遍歷“${role.modules}” 解決方案: ①正

stl 怎樣一個map的所有元素。請給是例項

兩 種方式iterator遍歷的次數是相同的,但在STL中效率不同,前++--返回引用,後++--返回一個臨時物件,因為iterator是類模板,使 用it++這種形式要返回一個無用的臨時物件,而it++是函式過載,所以編譯器無法對其進行優化,所以每遍歷一個元素,你就建立並銷燬了一個無用的臨

js陣列如何一次,刪除部分元素

經常做後臺取資料,渲染到頁面工作的前端童鞋可能都碰到過這種需求:那就是如果後臺傳給前端的資料要二次處理,一個數組,其中具有某種共同特徵的元素是我們不需要的,必須要把它刪除掉,這時候怎麼做呢。 常見的思路是:先用map方法遍歷一次,或其它方法遍歷,總之是把要去掉的元素改成

【NetApp】SnapDrive安裝過程遇到的一些

snapdrive update snapmirror 報錯信息1:Failed to get Data ONTAP version running on the storage system NetApp814b as it is not reachable. Ensure proper netwo

kolla制作過程:neutron-sfc-agent 的問題

neu non-zero rem 日誌記錄 arch docke ble install per 在使用二進制方式編譯鏡像的時候,neutron的sfc-agent提示如下錯誤ERROR:kolla.image.build:neutron-sfc-agent Failed

React-Native開發過程遇到的一些以及一些常用命令

1、升級node(對安裝包安裝或者低版本的如6.11.4不生效) 1>檢視node版本,沒安裝的請先安裝;  $  node -v 2>清除node快取; $  sudo npm cache clean -f  3>安裝node版本管理工具'n';

Git配置過程出現的問題,以及解決方案

    提示出錯資訊:fatal: remote origin already exists.     解決辦法如下:     1、先輸入$ git remote rm origin   

Android Studio專案打包AAR,以及專案嵌入AAR檔案,過程出現R檔案的坑

這幾天接到新需求,將ec專案嵌入到公司as總專案中,第一次搞,弄了好久,才搞定,入正題. 首先將ec專案匯入as中,解決各種報錯,比如png圖片,.9圖,以及各種不規範的log,吐死之類的,不細說,這個不難. 將專案遷移到AS中,成功執行,OK,開始打包AAR,打包AAR不

vue v-for 迴圈時的key值的

一 、問題如下: [Vue warn] Avoid using non-primitive value as key, use string/number value instead. non-pr

ionic android 編譯打包過程遇到的一些問題及解決方案

操作環境 ionic framework 3.9.2、 cordova (Cordova CLI) 8.1.2、ionic (Io

已經設置utf8的mysql cmd插入中文執行解決方法

客戶 res img 說明 設置 -1 bsp 插入 gbk 說明cmd客戶端的字符集是gbk,結果集也要設置為gbk。 使用語句 set character_set_client=gbk; set character_set_results=gbk; 就

vuex2使用mapMutations/mapActions解決方法 BabelLoaderError: SyntaxError: Unexpected token

int cte 使用 gin ets lin ade vue 編譯 在嘗鮮vuex2時,發現vuex2增加了 mapGetters 和 mapActions 的方法,借助stage2的 Object Rest Operator 特性,可以寫出下面代碼:methods: {

vuex2使用mapGetters/mapActions解決方法

ons read 配置 getter object clas set div ast 解決方案 可以安裝整個stage2的預置器或者安裝 Object Rest Operator 的babel插件 babel-plugin-transform-object-rest-spr

Pytorch常見的解決方案

本文用於記錄所在pytorch所遇到過的執行時錯誤,持續更新。 變數所在裝置(CPU,GPU)不一致問題 RuntimeError: Input type (torch.cuda.FloatTen

labviewNI_report.lvclass:Save Report to File.vi 模組解決方案

對於此問題本人嘗試了一下兩種方式解決: 一、開始懷疑是RGT工具包出了問題,於是重新安裝RGT工具包。重新安裝步驟如下: 選中圖中所示工具包,單擊刪除按鈕。 二、重新安裝檔案後,發現單獨開啟生成報表的那個子vi可以正常執行,但是開啟專案後此vi報錯。不得以重