黑马程序员技术交流社区

标题: map集合的遍历问题 [打印本页]

作者: SunCowbee    时间: 2016-9-11 01:10
标题: map集合的遍历问题
map集合遍历的时候,为啥增强for遍历不用迭代器,而将其装入set集合的时候要用迭代器

作者: tliangl928    时间: 2016-9-11 08:31
本帖最后由 tliangl928 于 2016-9-11 08:36 编辑

如使用迭代器遍历集合,需要分别对key和value进行迭代,比较麻烦。
map.keyset后获得set集合,使用增强for循环,可以
for(Object key : Set){
         ~~~ =Map.get(key);  //根据key取出对应的值
            System.out.println(key+"\t"+ ~~  );   
        }
比较简单
增强for循环的内部也是调用iteratoer实现的(可以查看编译后的文件(反编译))。使用增强for时,用的就是迭代的方式,只是封装好了,看不到而已。


作者: gaol    时间: 2016-9-11 08:40
你可以去看看源码
作者: Zzh94520    时间: 2016-9-11 08:50
666666666666
作者: java程序猿    时间: 2016-9-11 09:25
其实是一样的
作者: 独钓|寒江    时间: 2016-9-11 10:32
遍历map集合的方法其实也就两种,要么是keyset得到key(还有一个方法是得到value的),要么是entryset方法得到键值对,就是说不能直接遍历map集合,中间必须有一个转化的过程,都是转成可set集合进行遍历。
而加强for和迭代器都是可以遍历set集合的,所以他俩的使用是看个人爱好的,我是喜欢使用加强for。
(注意看方法的英文名,keyset:key的set集合,entryset:进入(转成)set。其实方法的命名不是随便起的,完全可以见名知意)
作者: EdwardWuang    时间: 2016-9-11 10:58
楼上说的很好
作者: SunCowbee    时间: 2016-9-11 11:20
tliangl928 发表于 2016-9-11 08:31
如使用迭代器遍历集合,需要分别对key和value进行迭代,比较麻烦。
map.keyset后获得set集合,使用增强for ...

谢大神正解
作者: chkanon    时间: 2016-9-11 11:45
增强for底层调用的也是迭代器,不论你是获取keySet 或者entrySet,一样都可以用增强for或迭代器
作者: chkanon    时间: 2016-9-11 11:47
chkanon 发表于 2016-9-11 11:45
增强for底层调用的也是迭代器,不论你是获取keySet 或者entrySet,一样都可以用增强for或迭代器 ...

map不能直接遍历,必须通过键的集合,或者键值对集合
作者: SunCowbee    时间: 2016-9-13 01:59
chkanon 发表于 2016-9-11 11:47
map不能直接遍历,必须通过键的集合,或者键值对集合

懂了,谢谢
作者: 唱情歌的神父    时间: 2016-9-13 09:46
给满分~~
作者: SunCowbee    时间: 2016-9-13 22:40
谢谢大家,明白了许多
作者: Zzh94520    时间: 2016-9-13 22:45
前面几个回答的好详细啊,我只知道map没有迭代器
作者: yigezhifu    时间: 2016-9-13 22:46
有人回答得很好,我就不说了
作者: changfa    时间: 2016-9-13 23:40
底部实现代码不可以  去看看源码 就知道了
作者: zaoan    时间: 2016-9-14 00:12
两种方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2