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

Java使用迭代器Iterator遍歷集合

 更新時(shí)間:2022年12月08日 08:58:33   作者:館主阿牛  
Iterator對(duì)象稱為迭代器(設(shè)計(jì)模式的一種),主要用于遍歷 Collection 集合中的元素。本文就來(lái)和大家詳細(xì)聊聊Java如何使用迭代器Iterator實(shí)現(xiàn)遍歷集合,感興趣的可以跟隨小編一起學(xué)習(xí)一下

前言

上兩篇文章總結(jié)了集合體系以及Collection常用方法,本節(jié)我們來(lái)學(xué)習(xí)使用迭代器 Iterator 遍歷集合!

Iterator 概述

Iterator對(duì)象稱為迭代器(設(shè)計(jì)模式的一種),主要用于遍歷 Collection 集合中的元素。

GOF 給迭代器模式的定義為:提供一種方法訪問(wèn)一個(gè)容器對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部細(xì)節(jié)。迭代器模式,就是為容器而生。

Collection 接口繼承了 java.lang.Iterable 接口,該接口有一個(gè) iterator ()方法,那么所有實(shí)現(xiàn)了 Collection 接口的集合類都有一個(gè) iterator ()方法,用以返回一個(gè)實(shí)現(xiàn)了 Iterator 接口的對(duì)象。

Iterator 僅用于遍歷集合, lterator 本身并不提供承裝對(duì)象的能力。如果需要?jiǎng)?chuàng)建 Iterator 對(duì)象,則必須有一個(gè)被迭代的集合。

集合對(duì)象每次調(diào)用 iterator() 方法都得到一個(gè)全新的迭代器對(duì)象,默認(rèn)游標(biāo)都在集合的第一個(gè)元素之前。

Iterator 的使用

使用 next() 方法遍歷集合

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
 * @Author:Aniu
 * @Date:2022/12/6 11:51
 * @description TODO
 */
public class Demo {
    public static void main(String[] args) {
        Collection coll = new ArrayList();
        coll.add("aniu");
        coll.add(123); //自動(dòng)裝箱
        coll.add(new String("miao"));

        // 遍歷集合
        Iterator iterator1 = coll.iterator();
        // 方式一:利用 for 循環(huán) -》不推薦
        for(int i=0;i<coll.size();i++){
            System.out.println(iterator1.next());
        }

        System.out.println("-----------");

        // 方式二 :利用 while 循環(huán) -》推薦
        Iterator iterator2 = coll.iterator();
        while(iterator2.hasNext()){
            System.out.println(iterator2.next());
        }
    }
}

使用 remove 方法刪除元素

我們也可以使用迭代器中的 remove 方法刪除集合中的元素。

Collection coll = new ArrayList();
coll.add("aniu");
coll.add(123); //自動(dòng)裝箱
coll.add(new String("miao"));
// 刪除"miao"
Iterator iterator = coll.iterator();
while(iterator.hasNext()){
    Object obj = iterator.next();
    if("miao".equals(obj)){
        iterator.remove(); // 刪除"miao"
    }
}

System.out.println(coll);

迭代器 Iterator 的執(zhí)行原理

Iterator iterator = coll.iterator();
while(iterator.hasNext()){ //hasnext() 判斷是否還有下一個(gè)元素
    System.out.println(iterator.next()); //next 1.指針下移 2.將下移以后集合位置上的元素返回
}

使用foreach循環(huán)遍歷集合或數(shù)組

foreach循環(huán)又叫增強(qiáng)for循環(huán),對(duì)于這個(gè)應(yīng)該都很熟悉了吧,看下大概結(jié)構(gòu)!

// for(datatype 變量名 : 遍歷對(duì)象)
for(Object obj:coll){
   System.out.println(obj);
}

內(nèi)部還是調(diào)用了迭代器!

需要注意的是,使用增強(qiáng)for循環(huán)無(wú)法改變數(shù)組里的值。

例:

String[] arr = new String[]{"aniu","haha","zz"};
for(int i=0;i<arr.length;i++){
    arr[i] = "momo";
}
for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
}

System.out.println("----------");

String[] arr1 = new String[]{"aniu","haha","zz"};
for (String str:arr1){
    str = "momo";
}
for(int i=0;i<arr1.length;i++){
    System.out.println(arr1[i]);
}

可以看到增強(qiáng)for并沒(méi)修改數(shù)組的值,本質(zhì)上是將遍歷值復(fù)制給了新變量String str,因此改變的是這個(gè)新變量的值!

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

相關(guān)文章

最新評(píng)論