Java之hashMap遍历方式_java hashmap遍历-程序员宅基地

技术标签: Java  java  

在java开发中,hashMap是非常重要的容器类,存储的是键值对(key,value)。
HashMap继承AbstractMap,实现了Map、Cloneable、Serializable接口,非线程安全类,但是效率高。HashMap允许null健和null值,允许value重复,但不允许key重复。HashMap有两个参数影响其性能,初始容量和加载因子,当哈希表中的条目数超出加载因子与当前容量的乘积时,要对哈希表进行refresh操作,重建内部数据结构,容量扩大为之前的两倍,加载因子默认值为0.75。

HashMap的遍历方式
第一种,遍历HashMap的entrySet键值对集合,通过HashMap.entrySet()得到键值对集合,通过迭代器Iterator遍历集合得到key和value。

public static void main(String[] args) {
        Map<Object, Object> map = new HashMap<>();
        map.put("caocao","11");
        map.put("liubei","22");
        map.put("sunquan","33");
        first(map);

    }

    private static void first(Map<Object, Object> map) {
        Iterator<Map.Entry<Object, Object>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<Object, Object> entry = iterator.next();
            System.out.println("key:" + entry.getKey() + ",vaule:" + entry.getValue());
        }
    }

第二种,遍历HashMap的keySet集合,通过HashMap.keySet()得到key集合,通过迭代器Iterator遍历集合得到key和value。

private static void second(Map<Object, Object> map) {
        Iterator<Object> iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
            Object key = iterator.next();
            System.out.println("key:" + key + ",vaule:" + map.get(key));
        }
    }

第三种,遍历HashMap的values集合,通过HashMap.valus()得到value集合,通过迭代器Iterator遍历集合得到key和value。

private static void third(Map<Object, Object> map) {
        Iterator<Object> iterator = map.values().iterator();
        while (iterator.hasNext()) {
            Object value = iterator.next();
            System.out.println("vaule:" + value);
        }
    }

第四种,遍历HashMap的entrySet键值对集合,通过HashMap.entrySet()得到键值对集合,通过for循环遍历集合得到key和value。

private static void fourth(Map<Object, Object> map) {
        for (Map.Entry<Object,Object> entry: map.entrySet()) {
            System.out.println("key:" + entry.getKey() + ",vaule:" + entry.getValue());
        }
    }

第五种,遍历HashMap的keySet集合,通过HashMap.keySet()得到key集合,通过for循环遍历集合得到key和value。

private static void fifth(Map<Object, Object> map) {
        for(Object key : map.keySet()) {
            System.out.println("key:" + key + ",vaule:" + map.get(key));
        }
    }

第六种,遍历HashMap的values集合,通过HashMap.valus()得到value集合,通过for循环遍历集合得到key和value。

private static void sixth(Map<Object, Object> map) {
        for (Object value : map.values()) {
            System.out.println("vaule:" + value);
        }
    }

第七种,通过Lambda遍历HashMap得到key和value

private static void seventh(Map<Object, Object> map) {
        map.forEach((key,value) -> {
            System.out.println("key:" + key + ",vaule:" + value);
        });
    }

第八种,通过Lambda遍历HashMap.entrySet()得到键值对集合得到key和value

private static void eighth(Map<Object, Object> map) {
        map.entrySet().forEach(item -> {
            System.out.println("key:" + item.getKey() + ",vaule:" + item.getValue());
        });
    }

第九种,通过Lambda遍历HashMap.keySet()得到key集合得到key和value

private static void ninth(Map<Object, Object> map) {
        map.keySet().forEach(item -> {
            System.out.println("key:" + item + ",vaule:" + map.get(item));
        });
    }

以上遍历主要Iterator遍历集合方式、for循环遍历集合方式,Lambda遍历集合方式,根据具体需求选用不同的方式,通过Iterator方式循环删除数据是安全的,for方式循环删除数据非安全,Lambda方式循环删除数据非安全,通过Iterator方式的效率也很高。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/leijie0322/article/details/123023309

智能推荐

Win10离线安装.net framework 3.5(错误:0x8024402c DISM失败解决方案)_错误0x8024402c解决dism失败,不执行任何操作-程序员宅基地

文章浏览阅读7.2w次,点赞65次,收藏263次。实习单位日常工作都在内网电脑中开展,在win10系统中安装早期软件经常与提示需要先进行“.net framework 3.5(包括.net2.0和3.0)”的安装,但是在离线状态下使用直接勾选或拷贝.exe安装包都没有成功,这里介绍一种离线状态下win10系统利用系统镜像文件安装net framework 3.5的方法,具体步骤及注意细节如下:一、查看系统版本的详细信息这一步是利用镜像文件进行安装十分关键的一步,也是很多教程中没有提及的一步,博主装的时候因为更新年份不同还导致了报错,最后在下载了同版本的_错误0x8024402c解决dism失败,不执行任何操作

BZOJ 1588: [HNOI2002]营业额统计 双向链表 / splay / treap-程序员宅基地

文章浏览阅读71次。1588: [HNOI2002]营业额统计Description营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受...

使用 nginx 与 nginx-rtmp-module搭建流媒体服务器_克隆nginx-rtmp-module失败-程序员宅基地

文章浏览阅读660次。如何自己搭建一个流媒体服务器,本次搭建流媒体使用的环境是 centos 7.0+nginx 1、下载nginx-rtmp-module:nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-module使用命令:[php] view plain copygit clone https://github.com/arut/ng..._克隆nginx-rtmp-module失败

《Learning Python》学习笔记_learning python第五版,中文-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏2次。书籍相关信息《Python 学习手册》 第四版 中文版(纸质书) 第五版 英文版(PDF格式)购买时间地点:2014年3月27日 淘宝阅读计划:五一之前阅读结束 (笔记可稍微延后)阅读宗旨:查漏补缺为主,实践练习为辅《Learning Python》学习笔记目录第一部分:使用入门_learning python第五版,中文

rmd文件怎么转换html文件,提取.Rmd文件的html依赖项(包含htmlwidgets)-程序员宅基地

文章浏览阅读790次。题我怎样才能创建一个将.Rmd文件(包含htmlwidgets代码)作为输入的函数,并输出一个包含其JavaScript / CSS依赖项的html文件?具体来说,当渲染为html时,临时文件rmarkdown为pandoc的–include-in-header参数生成.细节示例 – myfile.Rmd:This is some text```{r}library(dygraphs)dygrap..._怎么把rmd保存为html

QT designer 如何快速查看效果_qt designer 怎样查看界面效果-程序员宅基地

文章浏览阅读793次。Ctrl+R_qt designer 怎样查看界面效果

随便推点

itools苹果录屏大师_iTools联手顺网 专注服务7000万网吧用户-程序员宅基地

文章浏览阅读279次。近日,全球最快捷、易用的手机设备管理软件iTools宣布与全国领先的网吧平台服务商顺网科技达成战略合作,将推出针对网吧用户的定制版iTools手机助手,预计将通过顺网的“网维大师平台”,推送到全国10万家以上的网吧近1000万台网吧终端上,为每天至少7000万的网吧用户服务。iTools相关负责人表示,为更多的优质合作伙伴推出定制版手机设备管理软件,是未来iTools的深耕发展方向。移动互联网时代..._禁止网维大师推送游戏

JAVA使用JDBC连接oracle数据库_java使用jdbc连接oracle工具-程序员宅基地

文章浏览阅读371次。原文地址:hzy3774.iteye.com/blog/1689525首先要下载Connector/J地址:http://www.mysql.com/downloads/connector/j/这是MySQL官方提供的连接方式:解压后得到jar库文件,需要在工程中导入该库文件我是用的是Eclipse: JAVA连接MySQL稍微繁琐,所以先写一个_java使用jdbc连接oracle工具

学硬件好还是软件好?软件和硬件哪个更吃香?_软件和硬件哪个更有发展软件学问高还是硬件学问高他们以后哪个发展更好-程序员宅基地

文章浏览阅读1.5w次,点赞15次,收藏9次。做硬件好还是做软件好?硬件真的不如软件有前(钱)途?这不是一个新鲜的话题,而是很多电子硬件工程师长久以来的无奈和痛楚。尤其近几年,全球互联网发展迅速,让软件人才变得炙手可热。供求关系决定价格,加之软件业的成本主要是人(硬件需要更多的设备投入),软件工程师的薪资也更为丰厚。  有数据显示,单从美国方面看,电子工程师的工资增长不仅没有跟上软件工程师的增长速度,甚至还有下降。有网友说他认识的一个人,..._软件和硬件哪个更有发展软件学问高还是硬件学问高他们以后哪个发展更好

爱情不是必修课-程序员宅基地

文章浏览阅读1.5k次。恋爱,不是我需要我才爱,而是我爱所以才需要。HHF。。。_爱情不是必修课

在WindowsXP下 VC6.0 编译安装Boost库 Step by Step_vc6编译bootst-程序员宅基地

文章浏览阅读707次。要使用例如正则表达式类的话就需要编译了。为了不浪费自己High的心情,我还是决定完全编译一下Boost库。首先从Boost的老巢http://www.boost.org/下载。下载完成以后是一个安装文件(其实就是进行自动解压缩的)。选择你的目录解压缩Boost库。然后我们开始对其进行编译我所下载的版本是1.33.1。1.cmd2.进入安装VC的目录例如D:/Program Files/Microsoft Visual Studio/VC98/Bin目录3.运行VCVARS32.BAT(这个操作的_vc6编译bootst

srilm 阅读文档6_intervalheap-程序员宅基地

文章浏览阅读437次。IntervalHeap.h IntervalHeap.cc文档作者:jianzhu创立时间:08.08.30--------------------------------------1、基本类-------------------------------------- 这两个文件主要以模板方式定义了一个区间堆(IntervalHeap)。该区间堆是一个最大值堆和最小值堆的结合。通过在堆的每个节点

推荐文章

热门文章

相关标签