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

Java Collection集合的三種遍歷方式詳解

 更新時(shí)間:2022年11月29日 10:32:50   作者:藍(lán)桉cyq  
Collection集合遍歷的方式有三種,迭代器foreach/增強(qiáng)for循環(huán)lambda表達(dá)式,這篇文章主要介紹了Java Collection集合的三種遍歷方式,需要的朋友可以參考下

Collection遍歷方式

Collection集合遍歷的方式有三種:

迭代器foreach/增強(qiáng)for循環(huán)lambda表達(dá)式

迭代器遍歷

迭代器概述:

遍歷就是一個(gè)一個(gè)的把容器中的元素訪問一遍。

迭代器在Java中是Iterator代表的,迭代器是集合的專用遍歷方式。

Collection集合獲取迭代器的方:

方法名稱說明
iterator()返回集合中的迭代器對(duì)象,該迭代器對(duì)象默認(rèn)指向當(dāng)前集合的0索引
// 創(chuàng)建迭代器對(duì)象
Iterator ite = list.iterator();

Iterator中的常用方法:

方法名稱說明
hasNext()詢問當(dāng)前位置是否有元素存在,存在返回true ,不存在返回false
next()獲取當(dāng)前位置的元素,并同時(shí)將迭代器對(duì)象移向下一個(gè)位置,注意防止取出越界。

next方法獲取元素

public static void main(String[] args) {
    // 創(chuàng)建String類型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");

    // 創(chuàng)建迭代器對(duì)象
    Iterator ite = list.iterator();
    // 通過next取出元素
    System.out.println(ite.next()); // aaa
    System.out.println(ite.next()); // bbb
    System.out.println(ite.next()); // aaa
    // System.out.println(ite.next()); // 注意不要越界, 越界則報(bào)錯(cuò)
}

hasNext方法會(huì)判斷當(dāng)前位置是否有元素, 我們可以使用hasNext方法作為While循環(huán)的條件, 實(shí)現(xiàn)自動(dòng)遍歷元素

public static void main(String[] args) {
    // 創(chuàng)建String類型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");

    // 創(chuàng)建迭代器對(duì)象
    Iterator ite = list.iterator();
  
    // hasNext作為條件
    while (ite.hasNext()) {
        System.out.println(ite.next());
    }
}

小結(jié):

迭代器的默認(rèn)位置在哪里。

Iterator<E> iterator():得到迭代器對(duì)象,默認(rèn)指向當(dāng)前集合的索引0的位置

迭代器如果取元素越界會(huì)出現(xiàn)什么問題。

會(huì)出現(xiàn)NoSuchElementException異常。

foreach遍歷

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

既可以遍歷集合也可以遍歷數(shù)組

它是JDK5之后出現(xiàn)的, 其內(nèi)部原理是一個(gè)Iterator迭代器, 遍歷集合時(shí), 相當(dāng)于是迭代器的簡(jiǎn)化寫法

實(shí)現(xiàn)Iterable接口的類才可以使用迭代器和增強(qiáng)for, Collection接口已經(jīng)實(shí)現(xiàn)了Iterable接口

for(元素?cái)?shù)據(jù)類型 變量名 : 數(shù)組或者Collection集合) {
    //在此處使用定義的變量即可,該變量就是元素
}

演示代碼:

public static void main(String[] args) {
    // 創(chuàng)建String類型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");
    // 創(chuàng)建int類型的數(shù)組
    int[] arr = {10, 20, 80, 40};

    // foreach遍歷集合
    for (String item : list) {
        System.out.println(item);
    }
    // foreach遍歷數(shù)組
    for (int item : arr) {
        System.out.println(item);
      	// item = 100; // 注意此處修改變量item的值不會(huì)影響數(shù)組的值, 該操作無意義
    }
}

小結(jié): 增強(qiáng)for可以遍歷哪些容器?

既可以遍歷集合也可以遍歷數(shù)組。

Lambda遍歷

Lambda表達(dá)式遍歷集合:

得益于JDK 8開始的新技術(shù)Lambda表達(dá)式,提供了一種更簡(jiǎn)單、更直接的遍歷集合的方式。

Collection結(jié)合Lambda遍歷的API:

方法名稱說明
forEach(Consumer<? super T> action):結(jié)合lambda遍歷集合

通過foreach方法遍歷集合, foreach方法要求傳入一個(gè)Consumer接口類型的變量, 且該接口是一個(gè)函數(shù)式接口

演示代碼:

通過foreach方法遍歷

public static void main(String[] args) {
    // 創(chuàng)建String類型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");

    // 通過foreach方法遍歷
    list.forEach(new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    });
}

通過foreach方法結(jié)合Lambda表達(dá)式進(jìn)行遍歷

public static void main(String[] args) {
    // 創(chuàng)建String類型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");

    // foreach方法結(jié)合Lambda表達(dá)式
    list.forEach(s -> System.out.println(s));
}

到此這篇關(guān)于Java Collection集合的三種遍歷方式的文章就介紹到這了,更多相關(guān)Java Collection集合遍歷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Java中的 JSP 詳解

    關(guān)于Java中的 JSP 詳解

    JSP 代表 Java 服務(wù)器頁面。它是一種在應(yīng)用服務(wù)器端使用的編程工具。JSP 基本上用于支持平臺(tái)–獨(dú)立和動(dòng)態(tài)的方法來構(gòu)建 Web 依賴的應(yīng)用程序。JSP 頁面類似于 ASP 頁面,因?yàn)樗鼈兪窃诜?wù)器上編譯的,而不是在用戶的 Web 瀏覽器上進(jìn)行編譯。下面來看看文章的詳細(xì)介紹內(nèi)容
    2021-11-11
  • 如何使用Java完成Socket通信

    如何使用Java完成Socket通信

    這篇文章主要介紹了如何使用Java完成Socket通信問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • java使用緩沖流復(fù)制文件的方法

    java使用緩沖流復(fù)制文件的方法

    這篇文章主要為大家詳細(xì)介紹了java使用緩沖流復(fù)制文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Springboot中spring-boot-starter-quartz的使用及說明

    Springboot中spring-boot-starter-quartz的使用及說明

    這篇文章主要介紹了Springboot中spring-boot-starter-quartz的使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • java實(shí)現(xiàn)簡(jiǎn)單的圖書借閱系統(tǒng)

    java實(shí)現(xiàn)簡(jiǎn)單的圖書借閱系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單的圖書借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • java使用poi讀取ppt文件和poi讀取excel、word示例

    java使用poi讀取ppt文件和poi讀取excel、word示例

    這篇文章主要介紹了java使用poi讀取ppt文件和poi讀取excel、word示例,需要的朋友可以參考下
    2014-03-03
  • SpringBoot結(jié)合ProGuard實(shí)現(xiàn)代碼混淆(最新版)

    SpringBoot結(jié)合ProGuard實(shí)現(xiàn)代碼混淆(最新版)

    這篇文章主要介紹了SpringBoot結(jié)合ProGuard實(shí)現(xiàn)代碼混淆(最新版),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Elasticsearch?Recovery索引分片分配詳解

    Elasticsearch?Recovery索引分片分配詳解

    這篇文章主要為大家介紹了關(guān)于Elasticsearch的Recovery索引分片分配詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2022-04-04
  • java操作XML實(shí)例代碼

    java操作XML實(shí)例代碼

    這篇文章主要介紹了java操作XML實(shí)例代碼,有需要的朋友可以參考一下
    2014-01-01
  • 使用SpringSecurity設(shè)置角色和權(quán)限的注意點(diǎn)

    使用SpringSecurity設(shè)置角色和權(quán)限的注意點(diǎn)

    這篇文章主要介紹了使用SpringSecurity設(shè)置角色和權(quán)限的注意點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論