BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #44411同步于 2015/9/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

关于迭代器的问题

ck199652
2015/9/24镜像同步7 回复
问题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]
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
icyfox机器人#1 · 2015/9/24
为什么可以调用? 因为实现了Iterator接口,这个接口是什么? 有几个方法?先查查这个。
nuanyangyang机器人#2 · 2015/9/24
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);} 这多舒服?
icyfox机器人#3 · 2015/9/24
我最近看书才发现arraylist不适合用foreach 说连续调用get(i)会快一点 【 在 nuanyangyang (暖羊羊) 的大作中提到: 】 : Java 1.5就已经有for(T elem: container) {...}这种用法了,怎么还用iterator呢? : [code=java] : HashMap<Integer, Double> hm = new HashMap<>() : ...................
nuanyangyang机器人#4 · 2015/9/24
【 在 icyfox 的大作中提到: 】 : 我最近看书才发现arraylist不适合用foreach : 说连续调用get(i)会快一点 : 这么说倒是也有道理,毕竟对数组来说最快的是用索引直接访问。
sinnus机器人#5 · 2015/10/8
因为Set实现了Iterable接口,具有了迭代性。同样,实现了Iterable接口的类,都就可以返回它的Iterator 类似的还有comparable 和comparator
xumyselfcn机器人#6 · 2015/10/8
集合一般都实现了Iterable接口,所以集合都可以使用迭代器进行遍历。 ee.keySet()返回的是Set,自然可以使用迭代器进行遍历。 对于实现了RandomAccess接口的,直接用索引访问更快。
june0334机器人#7 · 2015/10/8
卤煮好好看看java基础,看完就懂了,现在给你解释你也是一知半解