亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于Java中增強(qiáng)for循環(huán)使用的注意事項(xiàng)

 更新時(shí)間:2021年06月16日 09:15:30   作者:一起隨緣  
for循環(huán)語(yǔ)句是java循環(huán)語(yǔ)句中最常用的循環(huán)語(yǔ)句,一般用在循環(huán)次數(shù)已知的情況下使用,這篇文章主要給大家介紹了關(guān)于Java中增強(qiáng)for循環(huán)使用的注意事項(xiàng),需要的朋友可以參考下

序言

for循環(huán)語(yǔ)句是java循環(huán)語(yǔ)句中最常用的循環(huán)語(yǔ)句,一般用在循環(huán)次數(shù)已知的情況下使用。for循環(huán)語(yǔ)句的語(yǔ)法格式如下:

java語(yǔ)言 for語(yǔ)句的用法
 
for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){
         執(zhí)行語(yǔ)句
         ……
}

開(kāi)發(fā)過(guò)程中,使用for循環(huán)遍歷集合或數(shù)組是司空見(jiàn)慣的一件事,大家也習(xí)慣這樣操作,但是有時(shí)候?yàn)榱撕?jiǎn)便,我們可能會(huì)使用增強(qiáng)for循環(huán),也就是類似for(String s : strList )寫法,但是有時(shí)候稍有不慎,可能會(huì)帶來(lái)一些莫名奇妙的錯(cuò)誤,比如ConcurrentModificationException,剛開(kāi)始可能大家也會(huì)一頭霧水,反復(fù)檢查代碼并沒(méi)有發(fā)現(xiàn)有什么寫的不對(duì)的地方。確實(shí),代碼并沒(méi)有問(wèn)題,只是使用增強(qiáng)for循環(huán)的時(shí)候,有些注意事項(xiàng)需要我們清楚,本文主要針對(duì)開(kāi)發(fā)中遇到的問(wèn)題和代碼示范下增強(qiáng)for的錯(cuò)誤用法。

代碼示例

1.錯(cuò)誤寫法

if(fileList.size() > 0){
    for(UserFile userFile : fileList){
        if(Constants.IS_DIR_YES == userFile.getIsDir()){//如果是文件夾,遞歸查找子文件,然后放入返回的結(jié)果list中
            childFileList = getChildFile(userFile.getId());
            if(childFileList.size() > 0){
                for(UserFile childUserFile : childFileList){
                    //給子文件賦予上一級(jí)的文件夾路徑
                    childUserFile.setFilePath("/" + userFile.getFileName() + childUserFile.getFilePath());
                    fileList.add(childUserFile);
                }
            }
        }
    }
}

2.正確寫法

if(fileList.size() > 0){
    for (int i = 0; i < fileList.size(); i++) {
        if(Constants.IS_DIR_YES == fileList.get(i).getIsDir()){//如果是文件夾,遞歸查找子文件,然后放入返回的結(jié)果list中
            childFileList = getChildFile(fileList.get(i).getId());
            if(childFileList.size() > 0){
                for (int j = 0; j < childFileList.size(); j++) {
                    //給子文件賦予上一級(jí)的文件夾路徑
                    childFileList.get(j).setFilePath("/" + fileList.get(i).getFileName() + childFileList.get(j).getFilePath());
                    fileList.add(childFileList.get(j));
                }
            }
        }
    }
}

3.寫法區(qū)別及報(bào)錯(cuò)原因

區(qū)別:主要是將錯(cuò)誤寫法中的增強(qiáng)for循環(huán)換成普通的for循環(huán),如圖所示

原因分析:增強(qiáng)for循環(huán)其實(shí)內(nèi)部是通過(guò)迭代器實(shí)現(xiàn)的,我們知道在迭代器中,迭代的時(shí)候不允許修改集合中的對(duì)象,不然會(huì)拋出ConcurrentModificationException異常。而我們的錯(cuò)誤代碼中,對(duì)fileList集合調(diào)用了fileList.add(childUserFile)方法往集合中添加新元素,而迭代器卻不知道,所以也會(huì)報(bào)這樣的錯(cuò)誤信息。實(shí)際上,增加for循環(huán)或迭代器遍歷元素的時(shí)候,是不能通過(guò)集合修改元素的,改成普通for循環(huán)就行了。

總結(jié)

到此這篇關(guān)于Java中增強(qiáng)for循環(huán)使用的注意事項(xiàng)的文章就介紹到這了,更多相關(guān)Java增強(qiáng)for循環(huán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis Generator 自定義生成注釋的方法

    MyBatis Generator 自定義生成注釋的方法

    這篇文章主要介紹了MyBatis Generator 自定義生成注釋的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Java實(shí)現(xiàn)線程安全單例模式的五種方式的示例代碼

    Java實(shí)現(xiàn)線程安全單例模式的五種方式的示例代碼

    這篇文章主要介紹了Java中實(shí)現(xiàn)線程安全單例模式的五種方式:餓漢式、枚舉單例、懶漢式、DCL懶漢式和靜態(tài)內(nèi)部類懶漢單例,感興趣的可以了解一下
    2022-03-03
  • java正則表達(dá)式如何獲取xml文件中指定節(jié)點(diǎn)的值

    java正則表達(dá)式如何獲取xml文件中指定節(jié)點(diǎn)的值

    這篇文章主要介紹了java正則表達(dá)式如何獲取xml文件中指定節(jié)點(diǎn)的值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java 注冊(cè)時(shí)發(fā)送激活郵件和激活的實(shí)現(xiàn)示例

    Java 注冊(cè)時(shí)發(fā)送激活郵件和激活的實(shí)現(xiàn)示例

    這篇文章主要介紹了Java 注冊(cè)時(shí)發(fā)送激活郵件和激活的實(shí)現(xiàn)示例的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • MybatisPlus更新時(shí)部分失敗的問(wèn)題解決

    MybatisPlus更新時(shí)部分失敗的問(wèn)題解決

    這篇文章主要為大家詳細(xì)介紹了MybatisPlus更新時(shí)部分失敗的問(wèn)題分析和解決方法,文中的代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • java Clone接口和深拷貝詳解

    java Clone接口和深拷貝詳解

    今天小編就為大家分享一篇關(guān)于Java Clonable接口和深拷貝詳解上的深入了解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2021-08-08
  • 基于request獲取訪問(wèn)者真實(shí)IP代碼示例

    基于request獲取訪問(wèn)者真實(shí)IP代碼示例

    這篇文章主要介紹了基于request獲取訪問(wèn)者真實(shí)IP代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • java加解密RSA使用方法代碼示例

    java加解密RSA使用方法代碼示例

    這篇文章主要介紹了java加解密RSA使用方法代碼示例,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • java使用正則抓取網(wǎng)頁(yè)郵箱

    java使用正則抓取網(wǎng)頁(yè)郵箱

    這篇文章主要為大家詳細(xì)介紹了java使用正則抓取網(wǎng)頁(yè)郵箱的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • mybatis中的延遲加載類型及設(shè)定詳解

    mybatis中的延遲加載類型及設(shè)定詳解

    這篇文章主要介紹了mybatis中的延遲加載類型及設(shè)定詳解,MyBatis中的延遲加載,也稱為懶加載,是指在進(jìn)行關(guān)聯(lián)查詢時(shí),按照設(shè)置延遲規(guī)則推遲對(duì)關(guān)聯(lián)對(duì)象的select查詢,延遲加載可以有效的減少數(shù)據(jù)庫(kù)壓力,需要的朋友可以參考下
    2023-10-10

最新評(píng)論