Java Iterator 接口
迭代器接口 Iterator 定义了迭代一个集合或序列所需的操作。在本教程中,我们将通过示例学习 Java 中的迭代器接口 Iterator 和它的用法。
在本教程中,我们将通过示例学习 Java 中的迭代器接口 Iterator
和它的用法。
迭代器接口 Iterator
定义了迭代一个集合或序列所需的操作。通过迭代器里接口,能一直获取需要迭代的下一个元素,知道全部元素迭代完成。
Collection
接口所有的子接口及其实现类(比如 List
, Set
, Queue
, Dequue
, ArrayList
, HashSet
, ArrayDeque
等)的都定义或实现了 iterator()
方法返回自己的迭代器,因此所有的集合都能使用 for-each
语句遍历集合中的元素。
Iterator
接口有一个子接口 ListIterator
。 ListIterator
接口适用于迭代列表对象,并可以在迭代过程中修改列表数据。
迭代器的方法
Iterator
接口提供了 4 种方法,可用于对集合的元素执行各种操作。
hasNext()
- 如果还有要迭代的元素则返回true
next()
- 返回要迭代的下一个元素remove()
- 删除并返回的上一次使用next()
迭代的元素forEachRemaining()
- 为迭代器中剩余的每个元素都执行指定的操作
示例:ArrayList 的迭代器
在下面的示例中,我们展示了如何使用迭代器迭代 ArrayList 对象。
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
// 获取迭代器
Iterator<Integer> iterate = numbers.iterator();
// 使用 next() 获取一个元素
int number = iterate.next();
System.out.println("当前的元素: " + number);
// 删除刚刚迭代的元素
iterate.remove();
System.out.println("删除的元素: " + number);
System.out.println("是否还有未迭代的元素: " + iterate.hasNext());
System.out.print("剩余的元素: ");
iterate.forEachRemaining((value) -> System.out.print(value + ", "));
}
}
输出
ArrayList: [1, 3, 2]
当前的元素: 1
删除的元素: 1
是否还有未迭代的元素: true
剩余的元素: 3, 2,
在上面的例子中,注意语句:
iterate.forEachRemaining((value) -> System.put.print(value + ", "));
在这里,我们将 lambda 表达式作为 forEachRemaining()
方法的参数传递。
(value) -> System.put.print(value + ", ")
上面 lambda 表达式的意思是打印当前元素。