java迭代器中刪除元素的實(shí)例操作詳解
我們知道通過Iterator,可以對(duì)集合中的元素進(jìn)行遍歷。那么在其中遇到我們不需要的元素時(shí),可不可以在遍歷的時(shí)候順便給刪除呢?答案是當(dāng)然可以。在Iterator下有一個(gè)remove函數(shù),專門用于刪除的操作。下面我們就remove進(jìn)行講解,然后對(duì)刪除元素方法進(jìn)行說明,最后帶來實(shí)例的展示。
1.Iterator中的removevoid remove():刪除迭代器剛越過的元素
從基礎(chǔ)集合中移除這個(gè)迭代器返回的最后一個(gè)元素(可選操作)。兩個(gè)線程中都刪除,保證線程的同步。
2.刪除元素說明(1)迭代器遍歷方式, 適用于連續(xù)內(nèi)存存儲(chǔ)方式,比如數(shù)組、 ArrayList(其實(shí) ArrayList底層實(shí)現(xiàn)也是數(shù)組形式)。 缺點(diǎn)是只能從頭開始遍歷, 優(yōu)點(diǎn)是可以邊遍歷邊刪除
(2)arraylist每次遍歷的時(shí)候會(huì)去判斷該集合是否被修改過,調(diào)用的方法是checkForComodification()。 如果被修改過ConcurrentModificationException異常。
(3)如何判斷是否修改呢,主要是通過維護(hù)2個(gè)變量來實(shí)現(xiàn),modCount記錄了修改次數(shù),expectedModCount記錄期望修改次數(shù)。 通過iterator.remove()進(jìn)行的刪除操作,會(huì)同時(shí)修改modCount、ConcurrentModificationException; 而通過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);// 移除最后訪問的元素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. asp讀取xml文件和記數(shù)2. XML入門的常見問題(一)3. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案4. 阿里前端開發(fā)中的規(guī)范要求5. html小技巧之td,div標(biāo)簽里內(nèi)容不換行6. webpack高級(jí)配置與優(yōu)化詳解7. IE6/IE7/IE8/IE9中tbody的innerHTML不能賦值的完美解決方案8. Xml簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理9. 讀寫xml文件的2個(gè)小函數(shù)10. 告別AJAX實(shí)現(xiàn)無刷新提交表單
