Iterable的常见方法以及含义

2023-10-27

1.Iterable

Iterable是java集合接口的顶级接口之一。

这是这个接口中的iterator方法,用来返回一个实现了Iterator接口的对象。

1.1Iterator接口中的方法:

1.1.1forEachRemaining方法

看下面这段代码:

import java.util.ArrayList;
import java.util.Iterator;

public class Test {
   public static void main(String[] args) {
       ArrayList<Integer> arrayList = new ArrayList<>();
       for (int i = 0; i < 10; i++) {
           arrayList.add(i);
       }
       Iterator<Integer> iterator1 = arrayList.iterator();
       iterator1.forEachRemaining(a -> System.out.print(a + " "));
       System.out.println();
       System.out.println("===============");
       while (iterator1.hasNext()) {
           System.out.println(iterator1.next());
       }
       System.out.println("===================================");
       while (iterator1.hasNext()) {
           System.out.println(iterator1.next());
       }
       System.out.println("===================================");

   }
}

运行结果为:

从运行结果来看我们的两个while语句并没有做任何事情,事实上forEachRemaining方法访问迭代器中的元素,并传递到指定的动作(在上段代码中指定动作就是打印访问到的元素),直到没有更多元素,或者这个动作抛出一个异常,显然在上段代码中,我们使用该方法时并没有访问任何元素,所以迭代器中的剩余元素就是所有元素了,等到之后while语句访问下一个元素时,迭代器中自然就没有了可以访问的元素,所以也不会执行while语句。

1.1.2hasNext()方法

该方法的作用是如果存在另外一个可访问的元素,返回true,该方法常常搭配next方法完成对迭代器中对象的遍历。

1.1.3next()方法

此方法返回将要访问的下一个对象。如果已经到达了集合的末尾,将抛出一个NosuchElementException的异常。

1.1.4remove方法

删除上次访问的对象,常常搭配next方法使用。如果上次访问之后集合已经发生了变化,这个方法就会抛出一个IllegalStateException异常

下面我们给出一段代码,并且和上段代码作比较:

import java.util.ArrayList;
import java.util.Iterator;

public class Test {
   public static void main(String[] args) {
       ArrayList<Integer> arrayList = new ArrayList<>();
       for (int i = 0; i < 10 ; i++) {
           arrayList.add(i);
       }
       Iterator<Integer> iterator1 = arrayList.iterator();
       iterator1.forEachRemaining(a -> System.out.print(a+" "));
       System.out.println();
       System.out.println("===============");
       while (iterator1.hasNext()){
           System.out.println(iterator1.next());
       }
       System.out.println("===================================");
       while (iterator1.hasNext()){
           System.out.println(iterator1.next());
       }
       System.out.println("===================================");
       Iterator<Integer> iterator2 = arrayList.iterator();
       int i = 0;
       while (iterator2.hasNext()){
           System.out.print(iterator2.next() + " ");
           i++;
           if (i == 5){
               break;
           }
       }
       while(iterator2.hasNext()){
           iterator2.next();
           iterator2.remove();
           i++;
           if (i == 8){
               break;
           }
       }
       System.out.println("===================================");
       iterator2.forEachRemaining(a -> System.out.print(a+" "));
       System.out.println();
       System.out.println("===============");
       

   }


}

 运行结果为:

在后面新加的代码中,我们重新创建了一个迭代器,然后先使用hasNext和next遍历了前五个对象接着再使用remove删除了三个对象,最后打印出了剩余的两个对象。

 

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

Iterable的常见方法以及含义 的相关文章

随机推荐

  • 解决ffmpeg视频转码后视频清晰度下降的问题

    清晰度 Chrome不支持非h264编码的mp4视频播放 可通过ffmpeg将视频转码成h264编码 ffmpeg i input mp4 vcodec h264 b v 0 output mp4 注 如果不加参数 b v 0 会有精度损失
  • Flutter Text控件在不同手机上不居中的问题

    在最近flutter页面改造过程中 发现通过Contail包裹Text控件设置上下padding时 在华为魅族和vivo等手机上并没有居中展示 所以通过查看控件属性 得以解决此类问题 可以看到上面的在华为手机上明显偏下了 使用 Contai
  • 找出一批正整数中的最大偶数_c语言求一批正整数的奇数和-求奇数和输入一批正整数c语言程序-找出一批正整数中最大的偶数c语言...

    include stdio h int main int a 10 i j k printf 输入10个整数 n for i k 0 i lt 10 i scanf d a k for j 0 j if a k a j k k printf
  • [疯狂Java]面向对象:单例模式

    1 单例模式的应用 1 单例类就是指该类最多只能创建一个对象 不能创建超过一个的对象 2 这样做的原因 要么就是为了降低系统开销 要么这种类型的对象创建了多个没有任何意义 最多只需要一个就行 例如窗口管理器 假脱机打印设备 数据库引擎访问结
  • TCP传输过程详解——三次握手、四次挥手

    TCP 3 1 三次握手 重点 3 2 四次挥手 重点 3 3 通过序列号与确认应答提高可靠性 3 4 重发超时的确定 3 5 以段为单位发送数据 3 6 利用窗口控制提高速度 3 7 滑动窗口控制 3 8 窗口控制中的重发控制 TCP T
  • ICCV19 (Oral)

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 本文作者 洪晓鹏 https zhuanlan zhihu com p 127956794 本文已由原作者授权 不得擅自二次转载 Zhiheng Ma Xing Wei
  • 苹果发布iOS16正式版,各机型升级建议

    文章目录 前言 升级注意事项 iOS 16增加了哪些功能 1 锁屏界面大改动 2 全新专注模式 3 查看Wi Fi密码 4面容ID横屏解锁 5 电量百分比 6 支持任天堂Switch手柄 7 键盘输入震动 8 隐藏相册支持加密 9 清理重复
  • Linux 信号(三) —— 强大的sigaction

    在Linux中 对于信号的收发有着两组函数 1 入门版 发送函数 int kill pid t pid int sig 接收函数 sighandler t signal int signum sighandler t handler 这组函
  • MyBatis进阶版

    本文有点难 目录 1 一些区分 1 1参数占位符 和 1 1 1SQL注入 1 1 2like查询 1 2resultType和resultMap 2 映射查询 2 1一对一表映射 2 2一对多表映射 3 动态SQL 3 1标签 3 2标签
  • esp32使用fft算法显示音乐频谱

    演示参考下方视频 源码链接在视频末尾获取 点击查看视频 介绍 本项目使用esp32s3 ifd4 2 声音传感器以及tft显示屏构成 使用快速傅里叶变换算法处理采集到的音频数据 fft处理后的数据使用lvgl显示在tft屏幕上 电路图 源码
  • SpringBoot MongoDB批量删除指定日期前的文件

    SpringBoot MongoDB批量删除指定日期前的文件 Query query new Query LocalDateTime localDateTime LocalDateTime of 2021 6 1 0 0 0 query a
  • 《动手学深度学习 Pytorch版》 2.1 数据操作

    2 1 1 数据操作 注意此处 import 的不是 pytorch 而是 torch Torch 是采用 lua 语言实现的 从某种程度上说 PyTorch 是 Torch 的 Python 版本 当然还是有部分差别的 import to
  • python学生分布_python统计函数库scipy.stats的用法解析

    背景 总结统计工作中几个常用用法在python统计函数库scipy stats的使用范例 正态分布 以正态分布的常见需求为例了解scipy stats的基本使用方法 1 生成服从指定分布的随机数 norm rvs通过loc和scale参数可
  • CDUA 图形学 Texture Reference 实验

    下面是对Texture Reference的实验 代码改自 CUDA C PROGRAMMING GUIDE PG 02829 001 v10 0 October 2018 p54 因为这里比较贴近计算机图形学 故移到图形学中去 版权所有
  • Java基础面试题一:请说说抽象类和接口的区别?

    1 抽象类实例 abstract class person public String name 可以有普通成员变量 public static String sex 可以有静态成员变量 public static void eat 可以有
  • 用GDB跟踪观察共享库函数的地址翻译过程

    用GDB跟踪观察共享库函数的地址翻译过程 用GDB观察共享库函数的翻译过程 研究了一下共享库函数是怎样加载到当前进程中的 开始共享库函数地址放在GOT中 第一次调用时 ld将其翻译成函数在程序空间的真实地址 用GDB跟踪了一下整个过程 记录
  • 宋浩概率论笔记(二)随机变量

    本章节内容较多 是概率论与数理统计中最为重要的章节 对于概率密度和分布函数的理解与计算要牢牢掌握 才能在后期的学习中更得心应手
  • 安装docker后启动报错Failed to set version to docker-desktop: exit code: -1

    背景 我想用PC Windows 上的VS code连接远程服务器 Linux 内的docker容器 这样能用编辑器editor修改文件 更加方便 VS code的插件remote container能达到这一目的 按照它的指示guide
  • 性能自动化测试

    性能自动化测试 1 为什么要做性能测试 2 什么是性能测试 3 性能测试分类 1 压力测试 2 负载测试 3 配置测试 4 基准测试 5 并发测试 6 容量测试 7 稳定性测试 4 什么时候需要进行何种性能测试 5 性能测试常见指标 1 响
  • Iterable的常见方法以及含义

    1 Iterable Iterable是java集合接口的顶级接口之一 这是这个接口中的iterator方法 用来返回一个实现了Iterator接口的对象 1 1Iterator接口中的方法 1 1 1forEachRemaining方法