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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 jttsai 于 2013-11-19 15:25 编辑

两者都是遍历map的,都可得到key和value啊,到底有什么区别,求教!越详细越好!!
keySet是键的集合,Set里面的类型即key的类型
entrySet是 键-值 对的集合,Set里面的类型是Map.Entry
这些我是知道的,我想问的是其他方面!

6PU2RE($QZWVQ34C@[P~(S6.jpg (41.21 KB, 下载次数: 16)

6PU2RE($QZWVQ34C@[P~(S6.jpg

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 帮我复习了一遍,谢谢哈

查看全部评分

5 个回复

正序浏览
Set<K> keySet()
返回此映射中包含的键的 Set 视图。 写的很清楚就是key的Set
Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射关系的 Set 视图。
也是一个Set,而Set中每个元素是内部类Map.Entry。

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
FFF + 1 + 3 解释得有点模糊没有自己的解释、但还是鼓励.

查看全部评分

回复 使用道具 举报
简单点的说:keySet()遍历是先将keys存入Set集合,再遍历该集合中的keys,再用 遍历得到的key取得相应的值 。value= get(key);获得值。

而entrySet()则是把所有的键值对存入Set集合。一对一对的存的。得到所有的键值对,直接遍历该集合得到单个的键值对Map.Entry的对象。再用键值对这种类的方法getKey()和getValue()得到相应的健与值。


其实两个函数名就高数你了。一个是keySet().表示获得所有key 的一个集合。一个是entrySet 表示获得所有“Entry”的集合。 其中“Entry”即是Map.Entry<T,T>   类。是map实体类的一个内部类。表示一对。

更多查看API:java.util.Map.Entry<K,V>

我们老师打了一个比方。很多对夫妻。一种方式是先取得(遍历得到)所有丈夫,然后便知道了所有妻子。keySet();

一种方式就是直接取得(遍历得到)所有的结婚证。直接读结婚证夫是谁,妻是谁。



评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
FFF + 1 + 3 很给力!一起努力吧~!

查看全部评分

回复 使用道具 举报
除了用键找值,和键值一起拿以外,没有任何区别,任选其一。

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 解释太简单了~木有分分~!~

查看全部评分

回复 使用道具 举报
⑴、Set<k> keySet
                  private static void method_2(Map<Integer, String> map) {
                                Set<Integer> keySet = map.keySet();
                                Iterator<Integer> it = keySet.iterator();
                                while (it.hasNext()) {
                                        Integer key = it.next();
                                String value = map.get(key);
                                Sop(key + "=" + value);
                            }
              }
   ⑵、Set<Map.Entry<k,v>> entrySet:提倡用这种方法
将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry。Entry其实就是Map中的一个static内部接口。为什么要定义在内部呢?因为只有有了Map集合,有了键值对,才会有键值的映射关系。关系属于Map集合中的一个内部事物。而且该事物在直接访问Map集合中的元素。
private static void method_3(Map<Integer, String> map) {
                        Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
                        // public static interface Map.Entry<K,V>:Entry<K,V>是Map内部接口
                        Iterator<Entry<Integer, String>> it = entrySet.iterator();
                        while (it.hasNext()) {
                                Map.Entry<Integer, String> me = it.next();
                                Integer key = me.getKey();
                                String value = me.getValue();
                                Sop(key + "=" + value);
                        }
}

点评

FFF
鄙视不写注释的版主~鄙视之~鄙视~~~  发表于 2013-11-19 19:11
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马