说说 Java 迭代器
发布日期:2021-06-29 21:05:20 浏览次数:2 分类:技术文章

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

Java 迭代器是一个对象,它在一个序列中单向移动并可操作该序列中的每个元素对象。

1 基本用法

除了单向移动这个特性之外,还包含了获取、检查与移除元素的 API 方法。

有了这些 API 方法,我们就可以迭代集合中的元素。

代码示例中,首先通过 iterator() 方法返回迭代器对象,然后检查、获取集合中的元素。

如果需要修改集合中的元素,那么可以先调用 next(),然后再修改这个元素。

如果只是想遍历 List ,并不打算修改或删除 List 对象中的元素,那么使用 for-in 语法会让代码看上去更加简洁。

2 反向遍历

除了传统的正向遍历之外,使用 ListIterator 还可以支持反向遍历。

ListIterator 提供了用于反向遍历的 API,比如获取、检查上一个元素,返回上一元素检索值等等:

利用这些 API 方法就可以实现前向或后向遍历咯:

3 for-in 语法

for-in 语法主要用于数组,但也可用于任何 Collection 对象,因为它们实现了  Iterable  接口。

Iterable 接口包含了一个能够生成 Iterator 的 iterator() 方法。for-in 语句就是使用这个 Iterable 接口来遍历序列。所以,任何实现了 Iterable 接口的类,都可以用于 for-in 语句。

Bruce Eckel 举了这样一个示例,来说明自定义的 Iterable 接口的类可以用于 for-in 语句:

通过实现不同规则的 Iterable,就可以定义不同的迭代规则。

逆序规则:

随机规则:

4 Iterator和Iterable的区别

Iterator是迭代器对象,是集合进行迭代遍历的底层依赖。而Iterable接口内部定义了返回Iterator对象的方法,实际上封装了 Iterator对象。

下面这段是Iterable接口的定义源代码:

为何不直接将hasNext(),next()方法等遍历方法设计在Iterable接口中?

因为有些集合类可能需要多种遍历方式,比如 LinkedList 就设计了 ListItr 与 DescendingIterator 方法分别用于实现双向遍历和逆序遍历。

转载地址:https://deniro.blog.csdn.net/article/details/108296019 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:说说 Java List 列表
下一篇:系统架构设计笔记(76)—— 业务流程重组

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月08日 01时21分48秒