返回信息流问题1:在网上看了很多Iterator迭代器的内容,觉得解释得我不是很能理解,请各位用通俗易懂的语言为我说明迭代器究竟是什么?
问题2:Iterator it=ee.keySet().iterator();
while(it.hasNext()){
String key=it.next().toString();
Sp sp=(Sp)ee.get(key);
}
ee是HashMap对象,放了若干个Sp的对象,第一行不能理解,ee.keySet()是键的Set视图(API上查的,啥意思?),还有ee.keySet()为什么可以调用iterator方法?什么东西可以调用iterator方法?
问题比较多哈[ema18][ema18]
这是一条镜像帖。来源:北邮人论坛 / java / #44411同步于 2015/9/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于迭代器的问题
ck199652
2015/9/24镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
Java 1.5就已经有for(T elem: container) {...}这种用法了,怎么还用iterator呢?
HashMap<Integer, Double> hm = new HashMap<>()
hm.put(1, 2.0);
hm.put(3, 4.0);
hm.put(5, 6.0);
for(Integer i: hm.keySet()) {
Double j = hm.get(i);
System.out.printf("%d: %f\n", i, j);
}
for(Map.Entry<Integer, Double> e : hm.entrySet()) {
Integer i = e.getKey();
Double j = e.getValue();
System.out.printf("%d: %f\n", i, j);}
这多舒服?
我最近看书才发现arraylist不适合用foreach
说连续调用get(i)会快一点
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: Java 1.5就已经有for(T elem: container) {...}这种用法了,怎么还用iterator呢?
: [code=java]
: HashMap<Integer, Double> hm = new HashMap<>()
: ...................
【 在 icyfox 的大作中提到: 】
: 我最近看书才发现arraylist不适合用foreach
: 说连续调用get(i)会快一点
:
这么说倒是也有道理,毕竟对数组来说最快的是用索引直接访问。
因为Set实现了Iterable接口,具有了迭代性。同样,实现了Iterable接口的类,都就可以返回它的Iterator
类似的还有comparable 和comparator
集合一般都实现了Iterable接口,所以集合都可以使用迭代器进行遍历。
ee.keySet()返回的是Set,自然可以使用迭代器进行遍历。
对于实现了RandomAccess接口的,直接用索引访问更快。