最新国产好看的视频,伊人天堂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è)的把容器中的元素訪問(wèn)一遍。

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

Collection集合獲取迭代器的方:

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

Iterator中的常用方法:

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

next方法獲取元素

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

    // 創(chuàng)建迭代器對(duì)象
    Iterator ite = list.iterator();
    // 通過(guò)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類(lèi)型的集合
    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)什么問(wè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)化寫(xiě)法

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

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

演示代碼:

public static void main(String[] args) {
    // 創(chuàng)建String類(lèi)型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");
    // 創(chuàng)建int類(lèi)型的數(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ù)組的值, 該操作無(wú)意義
    }
}

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

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

Lambda遍歷

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

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

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

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

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

演示代碼:

通過(guò)foreach方法遍歷

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

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

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

public static void main(String[] args) {
    // 創(chuàng)建String類(lèi)型的集合
    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)論

当雄县| 贵港市| 阿克苏市| 贡山| 九龙坡区| 资源县| 南和县| 高州市| 和龙市| 孟津县| 万荣县| 阳西县| 吉木萨尔县| 淄博市| 府谷县| 长沙县| 彭山县| 汶上县| 额敏县| 都江堰市| 手游| 义马市| 溆浦县| 奉新县| 虹口区| 聂拉木县| 武汉市| 赤峰市| 华亭县| 年辖:市辖区| 金堂县| 龙江县| 丰顺县| 吴江市| 宣威市| 沭阳县| 桂平市| 高尔夫| 天水市| 彰化县| 墨玉县|