Map集合中value()与keySet()、entrySet()区别

Map集合中value()与keySet()、entrySet()区别在Map集合中values():方法是获取集合中的所有的值—-没有键,没有对应关系,KeySet():将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。keySet():迭代后只能通过get()取keyentrySet():Set<Map.Entry<K,V>>ent…

大家好,又见面了,我是你们的朋友全栈君。

在Map集合中

values():方法是获取集合中的所有的值—-没有键,没有对应关系,

KeySet():
将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。 keySet():迭代后只能通过get()取key 

entrySet():

 

Set<Map.Entry<K,V>> entrySet() //返回此映射中包含的映射关系的 Set 视图。 Map.Entry表示映射关系。entrySet():迭代后可以e.getKey(),e.getValue()取key和value。返回的是Entry接口 。

 

 

 

下面通过例子看看:

Map<String,String> map = new HashMap<String,String>();
map.put(“01”, “zhangsan”);
map.put(“02”, “lisi”);
map.put(“03”, “wangwu”);

Collection<String> collection = map.values();//返回值是个值的Collection集合
System.out.println(collection);
打印结果:
[zhangsan, lisi, wangwu]

Set<K> keySet() //返回值是个只存放key值的Set集合(集合中无序存放的)

Set<Map.Entry<K,V>> entrySet() //返回映射所包含的映射关系的Set集合(一个关系就是一个键-值对),就是把(key-value)作为一个整体一对一对地存放到Set集合当中的。

一. keySet()方式。

Map<String,String> map = new HashMap<String,String>();
                
        map.put(“01”, “zhangsan”);
        map.put(“02”, “lisi”);
        map.put(“03”, “wangwu”);
                
                
        Set<String> keySet = map.keySet();//先获取map集合的所有键的Set集合

        Iterator<String> it = keySet.iterator();//有了Set集合,就可以获取其迭代器。
                
        while(it.hasNext()){

                String key = it.next();
                String value = map.get(key);//有了键可以通过map集合的get方法获取其对应的值。
                        
                System.out.println(“key: “+key+”–>value: “+value);//获得key和value值
                }

二. entrySet()方式:
Map<String,String> map = new HashMap<String,String>();
                
map.put(“01”, “zhangsan”);
map.put(“02”, “lisi”);
map.put(“03”, “wangwu”);

//通过entrySet()方法将map集合中的映射关系取出(这个关系就是Map.Entry类型)
Set<Map.Entry<String, String>> entrySet = map.entrySet();

//将关系集合entrySet进行迭代,存放到迭代器中                
Iterator<Map.Entry<String, String>> it2 = entrySet.iterator();
                
while(it2.hasNext()){

        Map.Entry<String, String> me = it2.next();//获取Map.Entry关系对象me
        String key2 = me.getKey();//通过关系对象获取key
        String value2 = me.getValue();//通过关系对象获取value
                        
        System.out.println(“key: “+key2+”–>value: “+value2);
}

虽然使用keyset及entryset来进行遍历能取得相同的结果
但两者的遍历速度是有差别的

keySet():迭代后只能通过get()取key 
entrySet():迭代后可以e.getKey(),e.getValue()取key和value。返回的是Entry接口 

说明:keySet()的速度比entrySet()慢了很多,也就是keySet方式遍历Map的性能不如entrySet性能好
为了提高性能,以后多考虑用entrySet()方式来进行遍历。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139125.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月30日 上午11:46
下一篇 2022年5月30日 上午11:46


相关推荐

  • pycharm加注释的快捷方式_pycharm如何批量注释

    pycharm加注释的快捷方式_pycharm如何批量注释1、主题  在开发项目的过程中经常需要创建任务列表,对于一些小任务,在代码中插入便签注释会有奇效。  这种注释的格式如下:  2、创建便签注释  非常简单:  首先,将光标定位到相应行。  然后,创建一行注释(Ctrl+Slash)。  最后,在#后面,输入TODO或者todo,然后输入注释  3、浏览便签  在T

    2022年8月28日
    6
  • oracle安装完如何使用,Oracle11g安装及使用详解

    oracle安装完如何使用,Oracle11g安装及使用详解一、首先我们在官网下载Oracle11g,链接如下:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html注意系统位数和文件个数两个文件都要下载,过程可能比价漫长,可以敲会代码或者做几篇阅读理解缓解一下情绪(为接下来操蛋的安装过程做好充分的心理准备)二、安装可以参考已下链接http://…

    2022年7月25日
    26
  • Vue基础知识总结 9:vue webpack打包原理

    Vue基础知识总结 9:vue webpack打包原理Java 学习路线 搬砖工逆袭 Java 架构师 简介 Java 领域优质创作者 CSDN 哪吒公众号作者 Java 架构师奋斗者 扫描主页左侧二维码 加入群聊 一起学习 一起进步 欢迎点赞 收藏 留言 一 前端模块化 webpack 是让我们可以进行模块化开发 并且会帮助我们处理模块间的依赖关系 并且不仅仅是 JavaScript 文件 还有 CSS 图片 json 文件等等 在 webpack 中都可以被当做模块来使用 二 打

    2026年3月20日
    2
  • CSS画三角形及其原理

    CSS画三角形及其原理本文转自https://blog.csdn.net/pengjunlee/article/details/53002553搜索网络之后发现三角形可以通过以下CSS代码实现:#triangle_bottom{height:0px;width:0px;border-left:20pxsolidtransparent;border-right:20pxsolidtransparent…

    2022年6月23日
    29
  • 20130829可注册域名列表

    20130829可注册域名列表absnn comacaox comacetg comacfcn comacogb comacrng comadcoh comadeih comadiqc comadnsh comadzex comaeeye comagcfq comahuaw comaigup comaineu comaingu comakbra comak

    2026年3月26日
    3
  • axure菜单展开收起_axure菜单左右滑动

    axure菜单展开收起_axure菜单左右滑动这样可以实现菜单栏最小化,而且在你鼠标不移动到左上角时,小箭头会隐藏,效果就可以了。axure9.0版本在发布后HTML页面打开时总是在顶部弹出菜单既不美观也影响效果。本人axure小白,摸索半天后发现也不能完全关闭或者不显示(除非代码修改);解决方案就是在请求地址后面拼接。…

    2022年8月19日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号