博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Iterator迭代器
阅读量:4519 次
发布时间:2019-06-08

本文共 1083 字,大约阅读时间需要 3 分钟。

Iterator接口共包含4个方法

public interface Iterator
{ E next(); boolean hasNext(); void remove(); default void forEachRemaining(Consumer
action){};}

1. 反复调用next()方法就可以逐个的遍历集合中的元素,如果在集合末尾调用next()方法就会抛出NoSuchElementException异常

2. 为了防止抛出这样的异常,我们在利用Iterato遍历集合元素时需要将next()和hasNext()配对使用,每次在调用next()方法迭代下一个元素时,应该先调用hasNext()方法检查是否存在下一个元素

3. 在Java SE 8中,甚至不用写循环。可以调用forEachRemaining()方法并提供一个lambda表达式。将对迭代器的每一个元素调用这个lambda表达式,直到没有元素

iterator.forEachRemaining(element -> /*do something with element*/);

4. 元素被访问的顺序取决于集合类型,如果对ArrayList进行迭代,迭代器将会从索引 0 开始,每迭代一次索引值加 1。然而,如果访问HashSet中的元素, 每个元素将会按照某种随机顺序次序出现。虽然可以确定在迭代过程中能够遍历到集合中的每一个元素,但却无法预知元素的访问次序

5. Java与C++的迭代器有本质区别。在C++中,迭代器是根据数组索引建模的,可以直接根据索引查找指定位置的元素。但是,Java中的迭代器不是如此,查找一个元素的唯一方法是next()方法,而且 Java 的迭代器在集合上顺序移动。可以将 Java 迭代器认为是位于两个元素之间,当调用next()方法时,迭代器越过下一个元素,并返回当前元素

这里写图片描述
6. next方法与 remove方法具有相互依赖性,如果调用remove之前没有调用next将会是不合法的。

iterator.remove();iterator.remove();  //Error!//不能连续删除,必须先将iterator移向下一个元素iterator.remove();iterator.next();iterator.remove();  //OK!

转载于:https://www.cnblogs.com/WhataNerd/p/8542435.html

你可能感兴趣的文章
c# Winform 开发分屏显示应用程序
查看>>
canvas刮奖
查看>>
qt下拖放(一)
查看>>
Linux后台运行python程序并输出到日志文件
查看>>
HTML的语义化和一些简单优化
查看>>
jQuery基础教程
查看>>
Spring 在xml文件中配置Bean
查看>>
poj1611(简答并查集)
查看>>
基于scap的服务器安全基线核查设计与实现
查看>>
NFS 安装与配置
查看>>
javascript 模拟滚动 隐藏滚动条
查看>>
深度探索C++对象模型读书笔记(2)
查看>>
Linux下不停止服务,清空nohup.out文件
查看>>
C++11 Intro - Thread Id
查看>>
帝国CMS操作类型一览表
查看>>
spring boot开发环境搭建
查看>>
手把手教你使用 Clion 开发 Linux C++ 项目
查看>>
unix环境高级编程基础知识之第一篇
查看>>
TTylinux 最小的系统(带GCC)
查看>>
Linux mysqladmin 命令
查看>>