最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

最新評(píng)論

休宁县| 龙游县| 娱乐| 巍山| 德江县| 鄂托克旗| 焦作市| 神池县| 牟定县| 靖宇县| 孝感市| 崇阳县| 江都市| 巴林右旗| 佛学| 贵定县| 屏南县| 东阳市| 古浪县| 东乡县| 建昌县| 即墨市| 河南省| 陵川县| 进贤县| 如皋市| 高尔夫| 沽源县| 宜兰市| 中阳县| 中西区| 腾冲县| 五莲县| 崇左市| 普安县| 香港| 肥城市| 中江县| 九江县| 专栏| 隆昌县|