1 概述:
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的容器主要是Collection的子类型,即都实现了Iterable接口,即使是Map类型,也有entrySet方法可以获得该Map的所有元素组成的Set。
2 迭代器的特点:
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。
注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2) 使用next()获得序列中的下一个元素。
(3) 使用hasNext()检查序列中是否还有元素。
(4) 使用remove()将迭代器新返回的元素删除。
(5) Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
3 常用迭代器格式:
**1 **Map的迭代
方法一 在for-each循环中使用entries来遍历
Map<Integer,Integer> map = new HashMap<>();
for(Map.Entry<Integer, Integer> entry : map.entrySet(){
System.out.println(entry);
}
方法二 在for-each循环中遍历keys或values
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
//遍历map中的键
for (Integer key : map.keySet()) {
System.out.println("Key = " + key);
}
//遍历map中的值
for (Integer value : map.values()) {
System.out.println("Value = " + value);
}
方法三使用Iterator遍历
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while(entries.hasNext()) {
Map.Entry<Integer, Integer> entry = entries.next();
System.out.println(entry.getKey() + "=" + entry.getValue());
}