获取和创建迭代器的核心是:有可迭代对象才能生成迭代器,python用iter()、java用iterator()方法;python内置容器均支持iter(),java集合通过iterator()获取,map需先取keyset()等视图;自定义迭代器需实现对应协议或接口。

获取和创建迭代器,核心就两点:有可迭代对象才能拿到迭代器;拿到后靠 iter()(Python)或 iterator()(Java)方法生成。
Python 中获取迭代器
Python 里几乎所有内置容器(列表、元组、字符串、字典、集合)都是可迭代对象,调用 iter() 就能获得对应迭代器:
my_list = [1, 2, 3]; it = iter(my_list)my_str = "abc"; it = iter(my_str)-
my_dict = {"a": 1, "b": 2}; key_it = iter(my_dict)(默认遍历键)
注意:iter() 接收一个实现了 __iter__() 方法的对象;如果对象没实现但支持下标和长度(如自定义序列),也可通过 collections.abc.Sequence 协议间接支持。
Java 中获取迭代器
Java 的迭代器由集合类提供,统一通过 iterator() 方法获取,返回 Iterator<e></e> 实例:
List<string> list = new ArrayList(); Iterator<string> it = list.iterator();</string></string>Set<integer> set = new HashSet(); Iterator<integer> it = set.iterator();</integer></integer>Map<string integer> map = new HashMap(); Iterator<string> keyIt = map.keySet().iterator();</string></string>
注意:Map 本身不直接提供 iterator(),需先调用 keySet()、values() 或 entrySet() 得到集合视图,再获取迭代器。
手动创建自定义迭代器
想控制遍历逻辑,可以自己写迭代器类:
-
Python:定义类,实现
__iter__()(返回self)和__next__()(返回值或抛StopIteration) -
Java:实现
Iterator<e></e>接口,重写hasNext()、next()和可选的remove()
更轻量的方式是用生成器函数(Python)或增强 for + 内部类(Java),但本质仍是按迭代协议生成合法迭代器对象。
其他常见创建方式
除了显式调用,迭代器也常隐式创建:
- Python 的
for item in obj:语句会自动调用iter(obj) - 生成器表达式
(x*2 for x in range(5))直接产生迭代器对象 - Java 的增强 for 循环(
for (String s : list))底层也调用iterator()











