欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java迭代器和for循環(huán)優(yōu)劣詳解

 更新時(shí)間:2021年01月21日 14:58:30   作者:小妮淺淺  
在本篇文章里小編給大家整理的是一篇關(guān)于java迭代器和for循環(huán)優(yōu)劣詳解內(nèi)容,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。

在進(jìn)行迭代的時(shí)候,程序運(yùn)行的效率也是我們挑選迭代方法的重要原因。目前有三種迭代方法:for循環(huán)、迭代器和Foreach。前兩者相信大家都非常熟悉,為了更加直觀分析效率的不同,我們還加入Foreach一起比較。下面我們就三種方法的概念進(jìn)行理解,然后ArrayList中探索三種方法的效率。

1.概念理解

for循環(huán):是支持迭代的一種通用結(jié)構(gòu),是最有效,最靈活的循環(huán)結(jié)構(gòu)

迭代器:是通過集合的iterator()方法得到的,所以我們說它是依賴于集合而存在的

Foreach:通過閱讀源碼我們還發(fā)現(xiàn)一個(gè)Iterable接口。它包含了一個(gè)產(chǎn)生Iterator對(duì)象的iterator()方法,而且將Iterator對(duì)象被foreach用來在序列中移動(dòng)。對(duì)于任何實(shí)現(xiàn)Iterable接口的對(duì)象都可以使用。

2.效率實(shí)例

ArrayList中的效率對(duì)比:

    List<Integer> integers = Lists.newArrayList();
    for(int i=0;i<100000;i++){
      integers.add(i);
    }
    long start1 = System.currentTimeMillis();
    for(int count =0 ;count<10;count++){
      for(int i=0;i<integers.size();i++){
        int j=integers.get(i);
      }
    }
    System.out.println(String.format("for循環(huán)100次時(shí)間:%s ms",System.currentTimeMillis()-start1));
    long start2 = System.currentTimeMillis();
    for(int count =0 ;count<10;count++) {
      for (Integer i : integers) {
        int j = i;
      }
    }
    System.out.println(String.format("foreach循環(huán)100次時(shí)間:%s ms",System.currentTimeMillis()-start2));
    long start3 = System.currentTimeMillis();
    for(int count =0 ;count<10;count++) {
      Iterator<Integer> iterator = integers.iterator();
      while(iterator.hasNext()){
        int j=iterator.next();
      }
    }
    System.out.println(String.format("迭代器循環(huán)100次時(shí)間:%s ms",System.currentTimeMillis()-start3));

結(jié)果:

for循環(huán)100次時(shí)間:15 ms

foreach循環(huán)100次時(shí)間:25 ms

迭代器循環(huán)100次時(shí)間:20 ms

知識(shí)點(diǎn)擴(kuò)展:

增強(qiáng)for循環(huán):foreach

在Java 5.0提供了一種新的迭代訪問 Collection和數(shù)組的方法,就是foreach循環(huán)。使用foreach循環(huán)執(zhí)行遍歷操作不需獲取Collection或數(shù)組的長度,也不需要使用索引訪問元素。

到此這篇關(guān)于java迭代器和for循環(huán)優(yōu)劣詳解的文章就介紹到這了,更多相關(guān)分析java迭代器和for循環(huán)優(yōu)劣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java并發(fā)Map面試線程安全數(shù)據(jù)結(jié)構(gòu)全面分析

    Java并發(fā)Map面試線程安全數(shù)據(jù)結(jié)構(gòu)全面分析

    本文將探討如何在Java中有效地應(yīng)對(duì)這些挑戰(zhàn),介紹一種強(qiáng)大的工具并發(fā)Map,它能夠幫助您管理多線程環(huán)境下的共享數(shù)據(jù),確保數(shù)據(jù)的一致性和高性能,深入了解Java中的并發(fā)Map實(shí)現(xiàn),包括ConcurrentHashMap和ConcurrentSkipListMap,及相關(guān)知識(shí)點(diǎn)
    2023-09-09
  • Java生成圖形驗(yàn)證碼工具類

    Java生成圖形驗(yàn)證碼工具類

    這篇文章主要介紹了Java生成圖形驗(yàn)證碼工具類,本文思路明確介紹的非常詳細(xì),需要的朋友可以參考下
    2017-02-02
  • Druid監(jiān)控分布式實(shí)現(xiàn)過程解析

    Druid監(jiān)控分布式實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Druid監(jiān)控分布式實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java 如何將表格數(shù)據(jù)導(dǎo)入word文檔中

    Java 如何將表格數(shù)據(jù)導(dǎo)入word文檔中

    這篇文章主要介紹了Java將表格數(shù)據(jù)導(dǎo)入word文檔中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 對(duì)arraylist中元素進(jìn)行排序?qū)嵗a

    對(duì)arraylist中元素進(jìn)行排序?qū)嵗a

    這篇文章主要介紹了對(duì)arraylist中元素進(jìn)行排序?qū)嵗a,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • 使用SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)重試模式的示例

    使用SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)重試模式的示例

    這篇文章主要介紹了使用SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)重試模式的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • Java多線程之Worker Thread模式

    Java多線程之Worker Thread模式

    這篇文章主要介紹了Java多線程之Worker Thread模式,Worker的意思是工作的人,在Worker Thread模式中,工人線程Worker thread會(huì)逐個(gè)取回工作并進(jìn)行處理,當(dāng)所有工作全部完成后,工人線程會(huì)等待新的工作到來,下面文章小編回給大家詳細(xì)介紹,需要的朋友可以參考一下
    2021-10-10
  • Java效率提升神器jOOR

    Java效率提升神器jOOR

    這篇文章主要介紹了Java效率提升神器jOOR,jOOR是一個(gè)第三方庫,通過鏈?zhǔn)紻SL接口,簡化了反射過程,更多相關(guān)內(nèi)容組要的朋友可以參考一下
    2022-07-07
  • Mybatis plus的自動(dòng)填充與樂觀鎖的實(shí)例詳解(springboot)

    Mybatis plus的自動(dòng)填充與樂觀鎖的實(shí)例詳解(springboot)

    這篇文章主要介紹了Mybatis plus的自動(dòng)填充與樂觀鎖的實(shí)例詳解(springboot),本文給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot @FixMethodOrder 如何調(diào)整單元測(cè)試順序

    SpringBoot @FixMethodOrder 如何調(diào)整單元測(cè)試順序

    這篇文章主要介紹了SpringBoot @FixMethodOrder 調(diào)整單元測(cè)試順序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評(píng)論