- Java教程
- Java - 主页
- Java - 概述
- Java - 环境设置
- Java - 基本语法
- Java - 变量类型
- Java - 基本数据类型
- Java - 基本运算符
- Java 控制语句
- Java - 循环控制
- Java - 决策
- Java - 如果-否则
- Java-开关
- Java - For 循环
- Java - For-Each 循环
- Java - While 循环
- Java - do-while 循环
- Java - 中断
- Java - 继续
- 面向对象编程
- Java - 对象和类
- Java - 方法
- Java - 构造函数
- Java - 访问修饰符
- Java-继承
- Java-多态性
- Java - 重写
- Java-抽象
- Java-封装
- Java - 接口
- Java - 包
- Java - 内部类
- Java 数据类型
- Java - 字符
- Java 文件处理
- Java - 文件和 I/O
- Java 错误与异常
- Java - 异常
- Java多线程
- Java-多线程
- Java同步
- Java-同步
- Java-线程间通信
- Java-线程死锁
- Java-线程控制
- Java网络
- Java-网络
- Java-URL 处理
- Java - 泛型
- Java集合
- Java - 集合
- Java列表接口
- Java - 列表接口
- Java队列接口
- Java - 队列接口
- Java地图接口
- Java - 地图接口
- Java - SortedMap 接口
- Java设置接口
- Java - 设置接口
- Java - SortedSet 接口
- Java数据结构
- Java - 数据结构
- Java-枚举
- Java 集合算法
- Java - 集合
- Java - 迭代器
- Java - 比较器
- Java杂项
- Java - 正则表达式
- Java-序列化
- Java - 发送电子邮件
- Java - Applet 基础知识
- Java - 文档
- Java 有用资源
- Java - 问题与解答
- Java - 快速指南
- Java - 有用的资源
- Java - 讨论
- Java - 示例
Java - 如何使用迭代器?
通常,您会希望循环访问集合中的元素。例如,您可能想要显示每个元素。最简单的方法是使用迭代器,它是一个实现 Iterator 或 ListIterator 接口的对象。
迭代器使您能够循环访问集合、获取或删除元素。ListIterator 扩展了 Iterator 以允许双向遍历列表以及修改元素。
在通过迭代器访问集合之前,您必须先获取一个集合。每个集合类都提供一个 iterator() 方法,该方法将迭代器返回到集合的开头。通过使用此迭代器对象,您可以访问集合中的每个元素,一次访问一个元素。
一般来说,要使用迭代器循环访问集合的内容,请按照以下步骤操作 -
通过调用集合的 iterator( ) 方法获取到集合开头的迭代器。
设置一个循环来调用 hasNext( )。只要 hasNext() 返回 true,就让循环迭代。
在循环中,通过调用 next( ) 获取每个元素。
对于实现List的集合,还可以通过调用ListIterator来获取迭代器。
Iterator声明的方法
先生。 | 方法及说明 |
---|---|
1 | 布尔值 hasNext( ) 如果有更多元素则返回 true。否则,返回 false。 |
2 | 对象下一个( ) 返回下一个元素。如果没有下一个元素,则抛出 NoSuchElementException。 |
3 | 无效删除() 删除当前元素。如果尝试调用remove()但之前没有调用next(),则抛出IllegalStateException。 |
ListIterator 声明的方法
先生。 | 方法及说明 |
---|---|
1 | 无效添加(对象 obj) 将 obj 插入列表中下一次调用 next( ) 将返回的元素前面。 |
2 | 布尔值 hasNext( ) 如果存在下一个元素,则返回 true。否则,返回 false。 |
3 | 布尔值有上一个( ) 如果存在前一个元素,则返回 true。否则,返回 false。 |
4 | 对象下一个( ) 返回下一个元素。如果没有下一个元素,则会抛出 NoSuchElementException。 |
5 | int 下一个索引( ) 返回下一个元素的索引。如果没有下一个元素,则返回列表的大小。 |
6 | 对象上一个( ) 返回前一个元素。如果不存在前一个元素,则会引发 NoSuchElementException。 |
7 | int 先前索引( ) 返回前一个元素的索引。如果不存在前一个元素,则返回 -1。 |
8 | 无效删除() 从列表中删除当前元素。如果在调用 next() 或 previous() 之前调用remove(),则会抛出 IllegalStateException。 |
9 | 无效集合(对象 obj) 将 obj 分配给当前元素。这是调用 next() 或 previous() 最后返回的元素。 |
实施例1
这是演示迭代器的示例。它使用 ArrayList 对象,但一般原则适用于任何类型的集合。
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class IteratorDemo { public static void main(String args[]) { // Create an array list List<String> al = new ArrayList<>(); // add elements to the array list al.add("C"); al.add("A"); al.add("E"); al.add("B"); al.add("D"); al.add("F"); // Use iterator to display contents of al System.out.print("Original contents of al: "); Iteratoritr = al.iterator(); while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } System.out.println(); } }
输出
Original contents of al: C A E B D F
实施例2
这是一个演示 ListIterator 的示例。它使用 ArrayList 对象,但一般原则适用于任何类型的集合。
当然,ListIterator 仅适用于那些实现 List 接口的集合。
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class IteratorDemo { public static void main(String args[]) { // Create an array list List<String> al = new ArrayList<>(); // add elements to the array list al.add("C"); al.add("A"); al.add("E"); al.add("B"); al.add("D"); al.add("F"); // Use iterator to display contents of al System.out.print("Original contents of al: "); Iterator<String> itr = al.iterator(); while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } } }
输出
Original contents of al: C A E B D F
实施例3
下面是一个示例,演示 ListIterator 在迭代时修改列表。它使用 ArrayList 对象,但一般原则适用于任何类型的集合。
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class IteratorDemo { public static void main(String args[]) { // Create an array list List<String> al = new ArrayList<>(); // add elements to the array list al.add("C"); al.add("A"); al.add("E"); al.add("B"); al.add("D"); al.add("F"); // Use iterator to display contents of al System.out.print("Original contents of al: "); Iterator<String> itr = al.iterator(); while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } System.out.println(); // Modify objects being iterated ListIterator<String> litr = al.listIterator(); while(litr.hasNext()) { Object element = litr.next(); litr.set(element + "+"); } System.out.print("Modified contents of al: "); itr = al.iterator(); while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } System.out.println(); // Now, display the list backwards System.out.print("Modified list backwards: "); while(litr.hasPrevious()) { Object element = litr.previous(); System.out.print(element + " "); } System.out.println(); } }
输出
Original contents of al: C A E B D F Modified contents of al: C+ A+ E+ B+ D+ F+ Modified list backwards: F+ D+ B+ E+ A+ C+