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

Java使用迭代器Iterator遍歷集合

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

前言

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

Iterator 概述

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

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

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

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

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

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); //自動裝箱
        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); //自動裝箱
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() 判斷是否還有下一個元素
    System.out.println(iterator.next()); //next 1.指針下移 2.將下移以后集合位置上的元素返回
}

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

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

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

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

需要注意的是,使用增強for循環(huán)無法改變數(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]);
}

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

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

相關(guān)文章

  • 學(xué)習(xí)Spring-Session+Redis實現(xiàn)session共享的方法

    學(xué)習(xí)Spring-Session+Redis實現(xiàn)session共享的方法

    本篇文章主要介紹了學(xué)習(xí)Spring-Session+Redis實現(xiàn)session共享的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java中Arrays工具類的一些常見方法總結(jié)

    Java中Arrays工具類的一些常見方法總結(jié)

    在Java中Arrays類是一個實用工具類,用于在數(shù)組上執(zhí)行各種操作,包括排序、搜索、比較等,這篇文章主要給大家介紹了關(guān)于Java中Arrays工具類的一些常見方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • J2ME編程中的幾個重要概念介紹

    J2ME編程中的幾個重要概念介紹

    本文介紹的是J2ME編程應(yīng)用平臺中的幾個重要概念,希望對你有幫助,一起來看。
    2015-09-09
  • Java中final、static關(guān)鍵字與方法的重寫和繼承易錯點整理

    Java中final、static關(guān)鍵字與方法的重寫和繼承易錯點整理

    這篇文章主要給大家介紹了關(guān)于Java中final、static關(guān)鍵字與方法的重寫和繼承易錯點的相關(guān)資料,在Java編程中final關(guān)鍵字用于限制方法或類的進一步修改,final方法不能被子類重寫,而static方法不可被重寫,只能被遮蔽,需要的朋友可以參考下
    2024-10-10
  • SpringBoot自動裝配Import示例詳解

    SpringBoot自動裝配Import示例詳解

    SpringBoot中@Import注解的使用可以幫助開發(fā)者將指定的Bean或配置類導(dǎo)入到IOC容器中,該注解支持四種用法:導(dǎo)入Bean、導(dǎo)入配置類、實現(xiàn)ImportSelector接口和實現(xiàn),感興趣的朋友一起看看吧
    2024-09-09
  • 使用java代碼實現(xiàn)一個月內(nèi)不再提醒,通用到期的問題

    使用java代碼實現(xiàn)一個月內(nèi)不再提醒,通用到期的問題

    這篇文章主要介紹了使用java代碼實現(xiàn)一個月內(nèi)不再提醒,通用到期的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • MyBatis Plus邏輯刪除和分頁插件使用詳解

    MyBatis Plus邏輯刪除和分頁插件使用詳解

    這篇文章主要介紹了MyBatis Plus之邏輯刪除和分頁插件使用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java基礎(chǔ)開發(fā)之JDBC操作數(shù)據(jù)庫增刪改查,分頁查詢實例詳解

    Java基礎(chǔ)開發(fā)之JDBC操作數(shù)據(jù)庫增刪改查,分頁查詢實例詳解

    這篇文章主要介紹了Java基礎(chǔ)開發(fā)之JDBC操作數(shù)據(jù)庫增刪改查,分頁查詢實例詳解,需要的朋友可以參考下
    2020-02-02
  • 詳解Java實踐之抽象工廠模式

    詳解Java實踐之抽象工廠模式

    抽象工廠模式用于產(chǎn)品族的構(gòu)建。抽象工廠是所有形態(tài)的工廠模式中最為抽象和最具一般性的一種形態(tài)。抽象工廠是指當(dāng)有多個抽象角色時使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產(chǎn)品的具體情況下,創(chuàng)建多個產(chǎn)品族中的產(chǎn)品對象
    2021-06-06
  • Java多線程join方法實例代碼

    Java多線程join方法實例代碼

    這篇文章主要介紹了Java多線程join方法實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02

最新評論

辰溪县| 云安县| 伊宁市| 阿拉善盟| 大理市| 茌平县| 菏泽市| 梨树县| 乌苏市| 商丘市| 丽水市| 靖边县| 湖口县| 江油市| 轮台县| 积石山| 子长县| 文安县| 额尔古纳市| 罗平县| 桃源县| 邹平县| 秭归县| 祁东县| 吉安市| 大连市| 武功县| 荥阳市| 时尚| 武宣县| 黄浦区| 新竹市| 登封市| 桐梓县| 郎溪县| 西畴县| 民和| 佳木斯市| 万源市| 措美县| 汾阳市|