如何正確遍歷刪除List中的元素,你會嗎?

遍歷刪除List中的元素有很多種方法,當運用不當的時候就會產生問題。下面主要看看以下幾種遍歷刪除List中元素的形式:

1.通過增強的for循環刪除符合條件的多個元素

2.通過增強的for循環刪除符合條件的一個元素

3.通過普通的for刪除刪除符合條件的多個元素

4.通過Iterator進行遍歷刪除符合條件的多個元素

?

[java] view plaincopy
  1. /**??
  2. ?*?使用增強的for循環??
  3. ?*?在循環過程中從List中刪除非基本數據類型以后,繼續循環List時會報ConcurrentModificationException??
  4. ?*/????
  5. public?void?listRemove()?{????
  6. ????List<Student>?students?=?this.getStudents();????
  7. ????for?(Student?stu?:?students)?{????
  8. ????????if?(stu.getId()?==?2)?????
  9. ????????????students.remove(stu);????
  10. ????}????
  11. }????
[java] view plaincopy
  1. /**??
  2. ?*?像這種使用增強的for循環對List進行遍歷刪除,但刪除之后馬上就跳出的也不會出現異常??
  3. ?*/????
  4. public?void?listRemoveBreak()?{????
  5. ????List<Student>?students?=?this.getStudents();????
  6. ????for?(Student?stu?:?students)?{????
  7. ????????if?(stu.getId()?==?2)?{????
  8. ????????????students.remove(stu);????
  9. ????????????break;????
  10. ????????}????
  11. ????}????
  12. }????
[java] view plaincopy
  1. /**??
  2. ?*?這種不使用增強的for循環的也可以正常刪除和遍歷,??
  3. ?*?這里所謂的正常是指它不會報異常,但是刪除后得到的??
  4. ?*?數據不一定是正確的,這主要是因為刪除元素后,被刪除元素后??
  5. ?*?的元素索引發生了變化。假設被遍歷list中共有10個元素,當??
  6. ?*?刪除了第3個元素后,第4個元素就變成了第3個元素了,第5個就變成??
  7. ?*?了第4個了,但是程序下一步循環到的索引是第4個,??
  8. ?*?這時候取到的就是原本的第5個元素了。??
  9. ?*/????
  10. public?void?listRemove2()?{????
  11. ????List<Student>?students?=?this.getStudents();????
  12. ????for?(int?i=0;?i<students.size();?i++)?{????
  13. ????????if?(students.get(i).getId()%3?==?0)?{????
  14. ????????????Student?student?=?students.get(i);????
  15. ????????????students.remove(student);????
  16. ????????}????
  17. ????}????
  18. }????

?

[java] view plaincopy
    1. /**??
    2. ?*?使用Iterator的方式可以順利刪除和遍歷??
    3. ?*/????
    4. public?void?iteratorRemove()?{????
    5. ????List<Student>?students?=?this.getStudents();????
    6. ????System.out.println(students);????
    7. ????Iterator<Student>?stuIter?=?students.iterator();????
    8. ????while?(stuIter.hasNext())?{????
    9. ????????Student?student?=?stuIter.next();????
    10. ????????if?(student.getId()?%?2?==?0)????
    11. ????????????stuIter.remove();//這里要使用Iterator的remove方法移除當前對象,如果使用List的remove方法,則同樣會出現ConcurrentModificationException????
    12. ????}????
    13. ????System.out.println(students);????
    14. }???

轉載于:https://www.cnblogs.com/toSeeMyDream/p/5818937.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395202.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395202.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395202.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jmeter 通過json Extracted 來獲取 指定的值的id

在沒有 精確或模糊查詢的接口時可以使用jmeter 獲取指定的值的ID import java.lang.String ; String getTargetName"iphone632g"; //判讀相應結果中是否包含指定值&#xff1a;iphone632g boolean containsCategoryprev.getResponseDataAsString().contains(getTarge…

mysql 結果保存到文件_將MySQL中sql運行結果保存到文件

將MySQL中sql運行結果保存到文件有兩種方法。方法一&#xff1a;在mysql>提示符中使用teemysql> tee output.txtLogging to file output.txtmysql> noteeOutfile disabled.或者mysql> \T output.txtLogging to file output.txtmysql> \tOutfile disabled.這個類…

獲取電腦和操作系統信息-uname

用法&#xff1a;uname [選項]...輸出一組系統信息。如果不跟隨選項&#xff0c;則視為只附加-s 選項。-a, --all 以如下次序輸出所有信息。其中若-p 和-i 的探測結果不可知則被省略&#xff1a;-s, --kernel-name 輸出內核名稱-n, --nodename 輸出網絡節點…

MobileSpace-關于我的激情的故事

by Monte Thakkar通過Monte Thakkar MobileSpace-關于我的激情的故事 (MobileSpace — A story about my passions) 我發現&#xff0c;學習和教授iOS開發的旅程 (My journey to discovering, learning, and teaching iOS development) “Let this be the first thing you hea…

Do you have an English name? 你有英文名嗎?

文中提到的所有人名都是虛構的&#xff0c;如有雷同&#xff0c;純屬巧合。當然&#xff0c;你的洋名兒也可能是德文、法文、意大利文&#xff0c;等々々々。 全球化時代&#xff0c;和老外的交流也多了。“高端”的程序員想要進歐美系外企&#xff0c;想要出國看世界&#xff…

php+nginx導入太大文件報http error錯誤的原因

項目中用到太多的導入導出&#xff0c;最近換了服務器&#xff0c;導致一旦文件過大就出現http error的錯誤&#xff0c;查找后是配置文件沒有同步的原因&#xff0c;php.ini需要幾個配置 upload_max_filesize 20M 表示上傳的最大文件為20M post_max_size 20M 允許post提交的…

rhel 7.2 安裝mysql_在rhel7.2下源碼安裝mysql-5.6.35

如何在一臺新機rhel7.2下源碼安裝mysql-5.6.35一、前期準備工作1、首先安裝依賴包&#xff0c;避免在安裝過程中出現問題yum -y install gcc gcc-c cmake ncurses-devel autoconf perl perl-devel2、下載源碼包3、創建mysql安裝目錄以及數據存放目錄[[email protected] liuzhen…

網絡安全不是奢侈品,而是必需品

2016年國家網絡安全宣傳周于9月19日至25日在武漢隆重舉辦。《長江日報》記者高萌采訪了思科全球副總裁、大中華區首席技術官曹圖強&#xff0c;以下是9月19日《長江日報》刊登的采訪全文&#xff1a; 思科全球副總裁、大中華區首席技術官曹圖強昨日下午&#xff0c;思科全球副總…

開源開發平臺_電線之間:開源開發商Sindre Sorhus的采訪

開源開發平臺by Vivian Cromwell通過維維安克倫威爾(Vivian Cromwell) 電線之間&#xff1a;開源開發商Sindre Sorhus的采訪 (Between the Wires: An interview with open source developer Sindre Sorhus) Here’s my interview Sindre Sorhus, a prolific open source devel…

白宮力挺FBI:庫克干擾司法與正義

據中文業界資訊站報道&#xff0c;眼看著谷歌、Mozilla、Facebook等大組織都開始聲援庫克&#xff0c;美國白宮也就關于要求蘋果協助解鎖iPhone調查加州槍擊案的事件作出了回應。白宮新聞秘書Josh Earnest強調&#xff0c;FBI并沒有要求蘋果重新設計產品或者是給它們留后門&…

UUID,加密解密算法的使用

注意的地方&#xff1a; Base64Encoder&#xff0c;Base64Decoder并不屬于JDK標準庫范疇&#xff0c;但是又包含在了JDK中 解決方法&#xff1a;按照如下方法設置Eclipse導入%JAVA_HOME%\jre\lib目錄下的rt.jar包即可&#xff0c;Project->Properties,選擇Java Build Path設…

sae mysql 同步本地_MYSQL入門之三_將本地MySQL數據導入SAE數據庫_MySQL

bitsCN.comMYSQL入門之三_將本地MySQL數據導入SAE數據庫1. MySQL字符集MySQL的默認字符集是latin1&#xff0c;將本地MySQL庫導出成sql&#xff0c;再導入到SAE的MySQL時中文字符出現亂碼&#xff0c;解決方法是將本地mysql默認字符集也設成utf8查看當前MySQL字符集mysql> s…

vim block vim_我如何學會愛Vim

vim block vimby Sanchit Gera通過Sanchit Gera 我如何學會愛Vim (How I learned to love Vim) I’ve had a bitter-sweet relationship with Vim for a long time.我與Vim有一段苦甜的戀情。 Over the last couple of years, I tried to learn Vim on several occasions. Ea…

AS 自定義 Gradle plugin 插件 案例 MD

Markdown版本筆記我的GitHub首頁我的博客我的微信我的郵箱MyAndroidBlogsbaiqiantaobaiqiantaobqt20094baiqiantaosina.comAS 自定義 Gradle plugin 插件 案例 MD 目錄 目錄AS 中自定義 Gradle plugin編寫插件傳遞參數發布插件到倉庫使用插件AS 中自定義 Gradle plugin 參考1 參…

學好Java的10個建議

1.克服慣性  將大塊任務細分為微任務。  2.關注大牛  你想學的或許是一門新的編程語言、應用框架或者是新的工具&#xff0c;一旦你確定了想要的是什么&#xff0c;就立刻去收集相應的優秀群體所做的一些優質的工作成果。這些可以從YouTube、Vimeo、HackerNews、各種博客…

中英文對照 —— 機械

0. 汽車 relay&#xff1a;繼電器&#xff0c;clutch&#xff1a;離合&#xff1b; motor&#xff1a;發動機&#xff08;馬達&#xff09;&#xff1b;檔位&#xff1a; park&#xff1a;停車擋braking&#xff1a;制動&#xff08;也就是剎車&#xff09;空擋&#xff1a;neu…

電子郵件鏈接mailto_“ 3個鏈接”電子郵件的歷史記錄以及曾經發送的每個鏈接的存檔...

電子郵件鏈接mailtoby Quincy Larson昆西拉爾森(Quincy Larson) “ 3個鏈接”電子郵件的歷史記錄以及曾經發送的每個鏈接的存檔 (The history of the “3 links” email and an archive of every link ever sent) It was March 2016. The freeCodeCamp community was growing.…

機票垂直搜索引擎的性能優化

機票垂直搜索引擎的性能優化 原文:機票垂直搜索引擎的性能優化一、行業背景與垂直搜索我們先了解一下機票的行業背景&#xff0c;下圖是由中航信統計的數據&#xff0c;藍色的曲線代表平均每公里的票價&#xff0c;紅色曲線指的是客運量。從2011年到2016年&#xff0c;無論是國…

2015國內征信機構大數據整合能力對比

自2001年起&#xff0c;大陸地區現代企業征信業進入在競爭中發展的階段&#xff0c;信用問題開始得到社會各界的廣泛關注&#xff0c;許多政府和民間投資的企業征信機構攜帶大量資本如雨后春筍般出現。 隨著企業征信行業環境不斷改善&#xff0c;信息透明度低的問題日益凸顯。大…

Unity3D 裝備系統學習Inventory Pro 2.1.2 基礎篇

前言 前一篇 Unity3D 裝備系統學習Inventory Pro 2.1.2 總結 基本泛泛的對于Inventory Pro 這個插件進行了講解&#xff0c;主要是想提煉下通用裝備系統結構和類體系。前兩天又讀了另一個插件 C# Inventory-uGui v2.0.1的源碼&#xff08;應該也是老外寫的&#xff09;&#xf…