java迭代器中刪除元素的實(shí)例操作詳解
我們知道通過(guò)Iterator,可以對(duì)集合中的元素進(jìn)行遍歷。那么在其中遇到我們不需要的元素時(shí),可不可以在遍歷的時(shí)候順便給刪除呢?答案是當(dāng)然可以。在Iterator下有一個(gè)remove函數(shù),專門(mén)用于刪除的操作。下面我們就remove進(jìn)行講解,然后對(duì)刪除元素方法進(jìn)行說(shuō)明,最后帶來(lái)實(shí)例的展示。
1.Iterator中的removevoid remove():刪除迭代器剛越過(guò)的元素
從基礎(chǔ)集合中移除這個(gè)迭代器返回的最后一個(gè)元素(可選操作)。兩個(gè)線程中都刪除,保證線程的同步。
2.刪除元素說(shuō)明(1)迭代器遍歷方式, 適用于連續(xù)內(nèi)存存儲(chǔ)方式,比如數(shù)組、 ArrayList(其實(shí) ArrayList底層實(shí)現(xiàn)也是數(shù)組形式)。 缺點(diǎn)是只能從頭開(kāi)始遍歷, 優(yōu)點(diǎn)是可以邊遍歷邊刪除
(2)arraylist每次遍歷的時(shí)候會(huì)去判斷該集合是否被修改過(guò),調(diào)用的方法是checkForComodification()。 如果被修改過(guò)ConcurrentModificationException異常。
(3)如何判斷是否修改呢,主要是通過(guò)維護(hù)2個(gè)變量來(lái)實(shí)現(xiàn),modCount記錄了修改次數(shù),expectedModCount記錄期望修改次數(shù)。 通過(guò)iterator.remove()進(jìn)行的刪除操作,會(huì)同時(shí)修改modCount、ConcurrentModificationException; 而通過(guò)list.remove(object/index),則只會(huì)修改modCount。 這也是fast-fail機(jī)制
3.刪除實(shí)例Iterator it=list.iterator(); while(it.hasNext()){ Object e=it.next(); if('b'.equals(e)){it.remove(); } } System.out.println(list);
Iterator中的remove()實(shí)例代碼:
import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class IteratorRemoveDemo {public static void main(String[] args) {List list = new ArrayList(5);for (int i = 0; i < 5; i++) {list.add(i);}System.out.println(list);// 移除最后訪問(wèn)的元素iterator.next();iterator.next();iterator.remove();System.out.println(list);}}/*輸出:[0, 1, 2, 3, 4][0, 2, 3, 4]*/
到此這篇關(guān)于java迭代器中刪除元素的實(shí)例操作詳解的文章就介紹到這了,更多相關(guān)java迭代器中刪除元素的操作內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Springboot Druid 自定義加密數(shù)據(jù)庫(kù)密碼的幾種方案2. 詳解Android studio 動(dòng)態(tài)fragment的用法3. 解決Android studio xml界面無(wú)法預(yù)覽問(wèn)題4. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁(yè)效果(實(shí)例代碼)5. 什么是python的自省6. Vuex localStorage的具體使用7. php模擬實(shí)現(xiàn)斗地主發(fā)牌8. Spring MVC+ajax進(jìn)行信息驗(yàn)證的方法9. Vue封裝一個(gè)TodoList的案例與瀏覽器本地緩存的應(yīng)用實(shí)現(xiàn)10. 使用Android studio查看Kotlin的字節(jié)碼教程

網(wǎng)公網(wǎng)安備