Iterator通过集合的iterator()方法获取,如list.iterator();Map需先调keySet()等转集合再获取;其为接口,不可new,泛型须匹配,游标初始在首元素前,单向遍历一次。

Iterator 怎么获取
所有实现了 Collection 接口的集合类(比如 ArrayList、LinkedList、HashSet)都自带 iterator() 方法。调用它就能拿到一个 Iterator 实例。
例如:
List<String> list = new ArrayList<>();-
Iterator<String> it = list.iterator();—— 这就是标准获取方式
注意:Map 本身不实现 Collection,所以不能直接调用 iterator()。但可以通过 keySet()、values() 或 entrySet() 先转成集合,再获取迭代器:
Iterator<String> keyIt = map.keySet().iterator();Iterator<Integer> valueIt = map.values().iterator();
Iterator 初始化的关键点
Iterator 不是手动 new 出来的,它是集合内部创建并返回的实现类对象,属于多态应用——用接口类型接收具体实现。
立即学习“Java免费学习笔记(深入)”;
初始化时需注意:
- 泛型要和集合一致,比如
ArrayList<Integer>对应Iterator<Integer> - 刚获取时,游标位于第一个元素之前,
hasNext()第一次调用才判断是否存在首元素 - 同一个 Iterator 实例只能单向遍历一次;遍历完再调
hasNext()会始终返回false
常见错误写法提醒
这些写法是错的,编译不通过或逻辑异常:
-
new Iterator<String>()—— Iterator 是接口,不能直接实例化 -
list.iterator().next()不加hasNext()判断 —— 可能抛NoSuchElementException - 用完一个 Iterator 后继续调
next()—— 已无元素,同样会报异常


















