一. 迭代器
Java 中的 Iterator 是一个可以用来遍历集合(如 ArrayList
和 HashSet
)的对象。它被称为 “iterator”(迭代器),因为 “iterating”(迭代)是循环遍历集合的技术术语。
要使用一个 Iterator
,你必须从 java.util
包中导入它
- Iterator:是一个接口,它允许我们通过集合中的元素进行循环操作,通常用于遍历集合元素。
- import:为了使用
Iterator
,我们需要从java.util
包中导入它,java.util
包包含了很多常用的集合类和接口,包括Iterator
。
iterator()
是一个方法,用来获取集合(如 ArrayList
、HashSet
等)的迭代器。通过这个迭代器,你可以遍历集合中的元素。
1. in.next()
it.next()
会逐个返回集合中的元素,并且在调用时会立即打印一个元素。每次调用 it.next()
时,它都会获取下一个元素,并且迭代器的指针会向前移动一位。所以,it.next()
每次只打印一个元素,而不是所有元素。
2. 迭代器的指针会向前移动一位这意味着什么?
意思是,当你调用 it.next()
方法时,迭代器会访问集合中的下一个元素,并将指针(也可以理解为当前迭代的位置)移动到下一个元素的位置
举个例子:
假设有一个集合:["A", "B", "C", "D"]
,初始时迭代器的指针指向集合的第一个元素 "A"
。
- **第一次调用
it.next()
**:- 返回
"A"
,然后迭代器的指针移动到"B"
。
- 返回
- **第二次调用
it.next()
**:- 返回
"B"
,指针移动到"C"
。
- 返回
- **第三次调用
it.next()
**:- 返回
"C"
,此时指针移动到集合的末尾,没有下一个元素了。
- 返回
迭代器指针的状态:
- 初始时,指针位于集合的开头(在
"A"
之前)。 - 每调用一次
next()
,指针就会“跳”到下一个元素,直到集合末尾。 - 当没有更多元素时,
it.hasNext()
返回false
,指针无法再前移,表示遍历结束
二. Getting an Iterator
方法 iterator()
可用于获取任何集合(如 ArrayList
、HashSet
等)的迭代器
例:
1 | import java.util.ArrayList; // 导入ArrayList类,用于创建和操作动态数组(集合) |
总结:
这段代码创建了一个 ArrayList
集合,并向其中添加了四个字符串元素。然后,通过 Iterator
获取集合的迭代器,使用 next()
方法打印出集合中的第一个元素 "Volvo"
接上述例子修改输出:遍历集合
1 | // 遍历集合 |
it.hasNext()
检查是否还有更多的元素可以遍历。如果有,it.next()
会返回并打印下一个元素,直到集合中没有更多元素为止。- 这意味着
it.next()
每次打印的是集合中的一个元素,并且是在循环的每次迭代中逐一打印。
使用 while
循环遍历集合。it.hasNext()
方法检查是否还有下一个元素,如果有,则继续循环
三. 从集合中移除项目
迭代器设计用于在遍历集合时轻松修改集合。remove()
方法可以在循环过程中从集合中移除项目
remove()
是迭代器的一个方法,允许你在调用 next()
后删除当前迭代到的元素。
例如:
1 | import java.util.ArrayList; // 导入 ArrayList 类 |
尝试使用
for
循环或for-each
循环删除元素时,可能无法正确工作,因为在代码尝试循环的同时,集合的大小发生了变化。