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

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











