国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

遍歷集合List的五種方法以及如何在遍歷集合過程中安全移除元素

這篇具有很好參考價(jià)值的文章主要介紹了遍歷集合List的五種方法以及如何在遍歷集合過程中安全移除元素。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、遍歷集合List的五種方法

測(cè)試數(shù)據(jù)

List<String> list = new ArrayList<>();
list.add("A");list.add("B");list.add("C");

1. 普通for循環(huán)

普通for循環(huán),通過索引遍歷

for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

2. 增強(qiáng)for循環(huán)

增強(qiáng)for循環(huán),數(shù)組以及所有Collection集合都可以使用增強(qiáng)for循環(huán)遍歷。遍歷集合的實(shí)際原理為獲取集合的iterator迭代器對(duì)象進(jìn)行迭代遍歷。

for (String s : list) {
    System.out.println(s);
}

3. Iterator迭代器遍歷

Collection接口繼承自Iterable接口,所有Collection集合都必須實(shí)現(xiàn)iterator()方法返回一個(gè)Iterator迭代器對(duì)象。因此可以通過list的iterator()方法獲取迭代器對(duì)象來進(jìn)行遍歷。并且可在迭代過程中調(diào)用iterator.remove()安全移除當(dāng)前元素。

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String s = iterator.next();
    if (s.equals("B")) iterator.remove();
    System.out.println(s);
}

4. ListIterator迭代器遍歷

所有List集合都必須實(shí)現(xiàn)一個(gè)listIterator()方法,返回一個(gè)ListIterator迭代器對(duì)象。ListIterator 是 Iterator 的子接口,除了可以從前往后遍歷外,還可以反向遍歷,即從后往前遍歷。還可以在遍歷過程中使用listIterator.add()方法在當(dāng)前遍歷位置之后插入元素,使用listIterator.set() 方法修改當(dāng)前元素,以及使用listIterator.remove()移除當(dāng)前元素。

ListIterator<String> listIterator = list.listIterator();
while (listIterator.hasNext()) {
    String element = listIterator.next();
    if (element.equals("B")) {
        // 修改當(dāng)前元素
        listIterator.set("D");
        
        // 在當(dāng)前元素后面插入一個(gè)新元素
        listIterator.add("E");
        
        //將迭代器指針移動(dòng)到前一個(gè)元素,然后進(jìn)行刪除
        listIterator.previous();
        listIterator.remove();
    }
}
System.out.println(list); // 輸出 [A, D, C]

5. list.forEach(lambda表達(dá)式)

list.forEach(element -> {
    // 使用 element
    System.out.println(element);
});

二、如何在遍歷集合過程中安全移除元素

如果在使用 Iterator 或 ListIterator 遍歷集合的過程中,使用了list.remove() 方法來移除元素,而沒有通過迭代器自身的 remove() 方法,就有可能導(dǎo)致 ConcurrentModificationException。這是因?yàn)閘ist內(nèi)部維護(hù)了一個(gè)修改計(jì)數(shù)器modCount, 記錄list中添加和刪除元素的次數(shù),迭代器對(duì)象內(nèi)部會(huì)維護(hù)一個(gè)迭代器修改計(jì)數(shù)器expectedModCount,如果被非迭代器方法修改了list,導(dǎo)致modCount增加了而expectedModCount沒有增加,導(dǎo)致二者不想等于是在check時(shí)拋出異常。

遍歷集合List的五種方法以及如何在遍歷集合過程中安全移除元素,# Java集合全解,list,Java文章來源地址http://www.zghlxwxcb.cn/news/detail-636105.html

  • 因此在增強(qiáng)for循環(huán)中不能添加或移除元素。
  • 需要使用Iterator 或 ListIterator 來迭代遍歷集合,并且使用迭代器的方法來移除或添加元素。

到了這里,關(guān)于遍歷集合List的五種方法以及如何在遍歷集合過程中安全移除元素的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java遍歷Map的五種方式

    java中遍歷map一般有五種方法,從最早的Iterator,到j(luò)ava5支持的foreach,再到j(luò)ava8的Lambda表達(dá)式。 如果只是獲取key,或者value,推薦使用keySet或者values方式 如果同時(shí)需要key或者value推薦使用entrySet 如果需要在遍歷過程中刪除元素推薦使用Iterator 如果需要在遍歷過程中增加元素,可

    2024年02月03日
    瀏覽(26)
  • Redis的五種數(shù)據(jù)類型(string、hash 、list、set、zset)

    Redis的五種數(shù)據(jù)類型(string、hash 、list、set、zset)

    ???????? ????????Redis 提供了豐富的數(shù)據(jù)類型,常見的有五種: String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合) 。 ????????String 是最基本的 key-value 結(jié)構(gòu),key 是唯一標(biāo)識(shí),value 是具體的值,value其實(shí)不僅是字符串, 也可以是數(shù)字(整

    2024年01月25日
    瀏覽(26)
  • 初識(shí)RabbitMQ(RMQ的五種消息模型介紹以及使用演示)

    初識(shí)RabbitMQ(RMQ的五種消息模型介紹以及使用演示)

    RabbitMQ官方提供了5個(gè)不同的Demo示例,對(duì)應(yīng)了不同的消息模型: 簡(jiǎn)單隊(duì)列 Work模式 廣播模式 路由模式 主題模式 其實(shí)我比較喜歡將他們分成三類: 1.簡(jiǎn)單隊(duì)列:一個(gè)生產(chǎn)者,一個(gè)消費(fèi)者。(名師指導(dǎo),1V1) 2.Work模式:一個(gè)生產(chǎn)者,多個(gè)消費(fèi)者。但是一條消息只能夠給到一個(gè)人

    2023年04月08日
    瀏覽(20)
  • 數(shù)組求和的五種方法

    // 數(shù)組求和的方法 let arr = [1,2,3,4,5] // 方法一:遞歸 function sum(arr){ const len = arr.length; if(len === 0) { return 0; } else if(len === 1){ return arr[0]; } else { return arr[0] + sum(arr.slice(1)); } } // 方法二:循環(huán) function sum(arr) { let s = 0; for(let i=0; iarr.length; i++){ s += arr[i] } return s; } // 方法三:map-reduce

    2024年02月10日
    瀏覽(23)
  • Hive導(dǎo)入數(shù)據(jù)的五種方法

    Hive導(dǎo)入數(shù)據(jù)的五種方法

    ????????在Hive中建表成功之后,就會(huì)在HDFS上創(chuàng)建一個(gè)與之對(duì)應(yīng)的文件夾,且 文件夾名字就是表名 ; 文件夾父路徑是由參數(shù)hive.metastore.warehouse.dir控制,默認(rèn)值是/user/hive/warehouse; 也可以在建表的時(shí)候使用location語句指定任意路徑。 ????????不管路徑在哪里,只有把數(shù)

    2024年01月18日
    瀏覽(29)
  • Linux清空日志的五種方法

    在Linux中,有多種方法可以清空日志文件。下面是五種常用的方法: 使用truncate命令: truncate命令可以將文件截?cái)酁橹付ù笮』蚯蹇瘴募?nèi)容。 示例:清空名為logfile.log的日志文件 使用cat命令重定向: cat命令可以將標(biāo)準(zhǔn)輸入重定向到文件,使用空內(nèi)容覆蓋文件內(nèi)容。 示例:

    2024年02月11日
    瀏覽(18)
  • 隱藏服務(wù)器IP的五種方法

    隨著互聯(lián)網(wǎng)的不斷發(fā)展,用戶們?cè)谌粘J褂猛ㄐ旁O(shè)備訪問網(wǎng)站時(shí)的風(fēng)險(xiǎn)也在不斷增大。因?yàn)镮P 地址對(duì) Internet 上的每個(gè)人都是可見的。根據(jù) IP 地址,其他互聯(lián)網(wǎng)用戶可以跟蹤用戶的位置、用戶使用哪個(gè)提供商連接到互聯(lián)網(wǎng)等等。因此許多用戶都在尋求隱藏IP地址的方法,翔域云

    2024年02月07日
    瀏覽(25)
  • axios發(fā)送請(qǐng)求的五種方法詳解

    1、帶參數(shù) // 方式一: //請(qǐng)求的地址為 localhost:8080/url?id=1 ? ? ? ? axios.get(\\\'/url\\\', {params: {id: 1}}) ? // 方式二: // 請(qǐng)求的地址為 localhost:8080/url?id=2 axios({ ? ? methods: \\\'get\\\', ? ? url: \\\'/url\\\', ? ? params: { ? ? ? ? id: 2 ? ? } }) 2、不帶參數(shù) // 方式一:? axios({ methods: \\\'get\\\', url: \\\'/url\\\' }) // 方式二

    2024年04月25日
    瀏覽(24)
  • 小程序頁面之間數(shù)據(jù)傳遞的五種方法

    使用 wx.navigateTo() 時(shí),在 url 中拼接,這種方法適用于數(shù)據(jù)量少的情況 跳轉(zhuǎn)前A頁面在 url 中拼接參數(shù),參數(shù)與路徑之間使用 ? 分隔,參數(shù)鍵與參數(shù)值用 = 相連,不同參數(shù)用 分隔; 跳轉(zhuǎn)到B頁面在生命周期函數(shù) onLoad 中接收 如果需要傳遞對(duì)象或數(shù)組,需先將對(duì)象或數(shù)據(jù)轉(zhuǎn)為JSON字符

    2024年02月10日
    瀏覽(31)
  • linux殺死進(jìn)程的五種方法(kill)

    linux殺死進(jìn)程的五種方法(kill)

    添加鏈接描述 相關(guān)博主的鏈接; 方法一:通過kill 進(jìn)程id的方式可以實(shí)現(xiàn) 首先需要知道進(jìn)程id, 例如,想要?dú)⑺纅irefox的進(jìn)程,通過 ps -ef|grep firefox,可以查到firefox的進(jìn)程id: 然后通過 kill 3781 就可以關(guān)閉進(jìn)程了. 補(bǔ)充: kill -9 來強(qiáng)制終止退出, 例如: kill -9 3781 特殊用法: kill -STOP [pid

    2024年02月02日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包