Java中的Iterator(迭代器)
1 概述
Java Iterator不是一个集合,是一种用于访问集合的方法,可用于迭代ArrayList和HashSet等集合。Iterator是Java迭代器最简单的实现,ListIterator是Collection API中的接口,它扩展了Iterator接口。
2 Iterator
public interface Iterator<E> {
boolean hasNext(); // 用于检测集合中是否还有元素
E next(); // 会返回迭代器的下一个元素,并且更新迭代器的状态
default void remove() { // 将迭代器返回的元素删除
throw new UnsupportedOperationException("remove");
}
default void forEachRemaining(Consumer<? super E> action) { // 对剩余元素进行遍历
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
}
3 ListIterator
public interface ListIterator<E> extends Iterator<E> {
// Query Operations
boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
// Modification Operations
void remove();
void set(E e);
void add(E e);
}
4 测试
public class IteratorTest {
public static void main(String[] args) {
// 创建ArrayList集合
List<String> sites = new ArrayList<>();
sites.add("I");
sites.add("love");
sites.add("java");
sites.add("!");
// 获取迭代器,集合中有个iterator方法可以返回迭代器对象
Iterator<String> iterator = sites.iterator();
/*
* 测试Iterator的四种方法:hasNext,next,remove,forEachRemaining
* */
// 1. hasNext
while (iterator.hasNext()) {
System.out.println(iterator.next()); // 2. next
}
// 3. remove,将迭代器返回的元素删除
iterator.remove(); // 此时迭代器返回的元素时“!”,删除!
}
}