Java的Iterator(迭代器)

2023-11-04

Java迭代器(Iterator)是 Java 集合框架中的一种机制,它提供了一种在不暴露集合内部实现的情况下遍历集合元素的方法。Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代  ArrayList 和 HashSet 等集合。Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口。

迭代器 it 的三个基本操作是 next 、hasNext 和 remove。

  • 调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。
  • 调用 it.hasNext() 用于检测集合中是否还有元素。
  • 调用 it.remove() 将迭代器返回的元素删除。

Iterator 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.Iterator; // 引入 Iterator 类
复制代码

获取一个迭代器:集合想获取一个迭代器可以使用 iterator() 方法。

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的第一个元素
        System.out.println(it.next());
    }
}
// 执行以上代码,输出结果如下:
// Google
复制代码

循环集合元素:让迭代器 it(迭代器名字) 逐个返回集合中所有元素最简单的方法是使用 while 循环。

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的所有元素
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}
// 执行以上代码,输出结果如下:
// Google
// Runoob
// Taobao
// Zhihu
复制代码

删除元素:删除集合中的元素可以使用 remove() 方法。

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

// 以下实例我们删除集合中小于 10 的元素
public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<Integer>();
        numbers.add(12);
        numbers.add(8);
        numbers.add(2);
        numbers.add(23);
        Iterator<Integer> it = numbers.iterator();
        while(it.hasNext()) {
            Integer i = it.next();
            if(i < 10) {  
                it.remove();  // 删除小于 10 的元素
            }
        }
        System.out.println(numbers);
    }
}
// 执行以上代码,输出结果如下:
// [12, 23]
复制代码

注意:Java 迭代器是一种单向遍历机制,即只能从前往后遍历集合中的元素,不能往回遍历。同时,在使用迭代器遍历集合时,不能直接修改集合中的元素,而是需要使用迭代器的 remove() 方法来删除当前元素。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java的Iterator(迭代器) 的相关文章

随机推荐

  • GRE隧道协议

    一 GRE协议简介 GRE General Routing Encapsulation 通用路由封装 是对某些网络层协议 如IP和IPX 的数据报文进行封装 使这些被封装的报文能够在另一网络层协议 如IP 中传输 此外 GRE协议也可以作为
  • matlab怎么处理非平衡数据处理,处理非平衡数据的七个技巧

    原标题 处理非平衡数据的七个技巧 摘要 本文介绍了在入侵检测 实时出价等数据集非常不平衡的领域应用的数据处理技术 关键字 平衡数据 数据准备 数据科学 原文 7 Techniques to Handle Imbalanced Data ht
  • 深度学习归一化方法总结(BN、LN、IN、GN)

    目录 一 批量归一化 BatchNorm 二 层归一化 Layer Normalization 三 Instance Normalization 四 Group Normalization 一般在神经网络中会用到数据的归一化 比如在卷积层后
  • C++栈初步认识和范围for循环

    C 栈初步认识 1 使用栈实现字符串反转 2 范围for循环 1 使用栈实现字符串反转 当我们需要在程序中实现一个 先进后出 的数据结构时 栈就是一个很好的选择 在C 中 我们可以通过STL提供的stack类来使用栈 stack类模板定义在
  • 分段函数求值1

    Copyright c 烟台大学计算机与控制工程学院 Author 刘慧艳 Created 2014 07 16 Edition V1 0 Describe 分段函数求值 include
  • 电网电压的三相静止对称坐标系和三相电网电压的相量表示法

    电网电压的空间电压矢量和电网电压的相量表示这两个概念需要区分清楚 分别参考邱关源的 电路 和张兴的 PWM整流 相关章节 图2 三相电网电压的相量表示法 电网电压的相量表示 三相相差120度 整体逆时针50HZ旋转 这里的120度是指三分之
  • ceph -s分析

    1 源码跟踪 1 1 get cluster status https github com ceph ceph blob 2a724a2ff313701fd7f6278ce8ed7f440bb355e0 src mon Monitor c
  • Jenkins pipeline拉取代码超时

    拉取代码报错 using GIT ASKPASS to set credentials gt git fetch tags progress http 192 168 1 8 1234 bi web xxxxxx git refs head
  • Linux学习笔记:win10安装虚拟机

    第一步 打开win10自带的虚拟机 第一步 打开win10自带的虚拟机Hyper V 需要 win10系统 1 点击windows键 e键打开文件资源管理器 右击此电脑 gt 选择属性 gt 打开控制面板 2 选择控制面板主页 gt 选择程
  • 机器人识别抓取笔记(基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计:综述)

    Real Time Deep Learning Approach to Visual Servo Control and Grasp Detection for Autonomous Robotic Manipulation 基于视觉的机器
  • el-upload的多文件上传

    el upload实现多文件上传的方法
  • 【C++】第一章:多数据输入时的分隔问题

    在键盘输入多数据时 必须用空格键 Tab键或enter键隔开 不同数据类型的输入 按数据类型读取数据 当用enter键分隔数据时 当用空格键分隔时结果是一样的 多数据错误输入情况 当有与数据类型不匹配的数据时 用空格键分隔 按变量数据类型依
  • vue.js使用props在父子组件之间传参

    prop 组件实例的作用域是孤立的 这意味着不能 也不应该 在子组件的模板内直接引用父组件的数据 要让子组件使用父组件的数据 我们需要通过子组件的 props 选项 子组件要使用 props选项声明它期待获得的数据 官方的解释非常清晰了 两
  • vue进阶04-vue文档生成工具vuepress2

    介绍 VuePress 是一个以 Markdown 为中心的静态网站生成器 你可以使用 Markdown 来书写内容 如文档 博客等 然后 VuePress 会帮助你生成一个静态网站来展示它们 VuePress 诞生的初衷是为了支持 Vue
  • Java中的substring截取字符串方法

    1 问题描述 在处理字符串的过程中有很多情况下会遇到需要截取字符串的情况 这个时候使用Java中提供的substring方法来截取就非常方便了 2 其中比较经常使用到的方法有两个 public String substring int be
  • 安全通用要求之安全通信网络

    安全通信网络 网络架构 业务高峰期 安全要求 需要保证网络设备的业务处理能力满足高峰期的需要 要求解读 了解业务高峰的时间段 核查该时间段内设备的处理能力是否满足 测评方法 确定业务高峰期的时间段 访谈查看网管平台的统计数据 业务高峰期时间
  • 浅谈Android环境开发配置

    经过两个月的java基础学习 个人觉得在搭建开发环境配置方面 Android环境开发比Java环境开发麻烦多了 Java环境配置前面我谈过了 这里就只写写Android的环境开发 Android环境开发需要Android SDK开发包 根据
  • Midjourney V5横空出世:画出完美中国情侣 逼真得令人毛骨悚然

    雷递网 雷建平 3月20日 2023年 AI技术正在加速对人类世界的改变 在ChatGPT的升级版GPT 4横空出世 能玩梗图还能做网页之际 Midjourney V5已正式发布 该服务可以生成逼真的图像 其质量水平被一些AI艺术爱好者称为
  • es7合并数组相关 报错Uncaught (in promise) TypeError: Invalid attempt to spread non-iterable instance. In ...

    方法一 let o1 a 1 b 2 c 3 let o2 o1 d 4 o2 a 1 b 2 c 3 d let arr1 0 1 2 let arr2 arr1 3 arr2 0 1 2 3 方法二 let o1 a 1 b 2 c 3
  • Java的Iterator(迭代器)

    Java迭代器 Iterator 是 Java 集合框架中的一种机制 它提供了一种在不暴露集合内部实现的情况下遍历集合元素的方法 Java Iterator 迭代器 不是一个集合 它是一种用于访问集合的方法 可用于迭代 ArrayList