A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© SunCowbee 中级黑马   /  2016-9-11 01:10  /  1456 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

map集合遍历的时候,为啥增强for遍历不用迭代器,而将其装入set集合的时候要用迭代器

16 个回复

倒序浏览
本帖最后由 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时,用的就是迭代的方式,只是封装好了,看不到而已。

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

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

map不能直接遍历,必须通过键的集合,或者键值对集合
回复 使用道具 举报
chkanon 发表于 2016-9-11 11:47
map不能直接遍历,必须通过键的集合,或者键值对集合

懂了,谢谢
回复 使用道具 举报
给满分~~
回复 使用道具 举报
谢谢大家,明白了许多
回复 使用道具 举报
前面几个回答的好详细啊,我只知道map没有迭代器
回复 使用道具 举报
有人回答得很好,我就不说了
回复 使用道具 举报
底部实现代码不可以  去看看源码 就知道了
回复 使用道具 举报
zaoan 中级黑马 2016-9-14 00:12:03
17#
两种方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马