如果一个类实现 Iterable 和 Iterator接口 之后
就可以使用foreach遍历
问题
①直接实现Iterator
②先实现Iterable,然后再重写iterator方法时候 返回一个Iterator实例
③如果想用foreach遍历返回值的话,可以直接把返回值定为Iterable<>(指定泛型,不用强转了)
不过返回值要是一个集合(比如Integer、String的集合)。
1,2有什么区别
※ Map接口并没有实现Iterator接口,不能直接使用Iterator遍历, 只能通过Map.entrySet()
转化为set之后使用Iterator遍历
※ Map for-each循环的话也是不能直接迭代循环,list set接口可以(因为他们实现了Collection接口)
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);
}
网友评论