java中hashmap遍历_map遍历的两种方式

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在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方式的效率也很高。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 广告频次控制(frequency capping)「建议收藏」

    广告频次控制(frequency capping)「建议收藏」频次控制介绍广告中的频次控制是指控制一个用户最多在指定时间内看到一个广告(或相似广告)的次数,比如广告主可以限制一个用户最多只能一天看到一个广告3次(频次控制也可以让publisher来指定,但本文不

    2022年8月5日
    8
  • HONOR荣耀50/荣耀50Pro怎么解锁huawei 荣耀50pro屏幕锁开机锁激活设备锁了应该如何强制解除鸿蒙系统刷机解锁方法流程步骤不开机跳过锁屏移除锁定进系统方法经验

    HONOR荣耀50/荣耀50Pro怎么解锁huawei 荣耀50pro屏幕锁开机锁激活设备锁了应该如何强制解除鸿蒙系统刷机解锁方法流程步骤不开机跳过锁屏移除锁定进系统方法经验今天带来一台用户华为荣耀50手机强制清除华为账号锁案例分享,这个台手机是用户公司手机,由于前使用者离职后未能退出手机的华为账号和锁屏密码,导致手机无法使用。自己通过简单的恢复出厂设置后,发现手机有华为账号锁无法激活手机,这才联系到刷机爱好者技术人员,给予远程强制刷机移除华为荣耀60的账号锁。在此提醒广大用户,登录的华为账号建议绑定经常使用的手机号码,防止无法找回密码从而到时手机无法使用。在刷机解锁过程中需要准备以下工具:链接:百度网盘请输入提取码提取码:8888备用下载连接:yun.p

    2022年6月19日
    482
  • Linux rsync同步操作和inotify实时同步 、 Cobbler装机平台 (SERVICE06—-DAY21)[通俗易懂]

    Linux rsync同步操作和inotify实时同步 、 Cobbler装机平台 (SERVICE06—-DAY21)[通俗易懂]rsync同步操作•命令用法–rsync[选项…]源目录目标目录•同步与复制的差异–复制:完全拷贝源到目标–同步:增量拷贝,只传输变化过的数据同步控制•rsync操作选项–-n:测试同步过程,不做实际修改––delete:删除目标文件夹内多余的文档–-a:归档模式,相当于-rlptgoD–-v:显示详细操作信息–-z:传输过程中启用压缩/解…

    2022年7月18日
    16
  • 常用的Js调Android方法,以及Android原生传值给Js

    常用的Js调Android方法,以及Android原生传值给Js

    2021年3月12日
    174
  • lede旁路由设置方法

    lede旁路由设置方法lede固件号:2.361.把网络–>接口里面wan口删除2.推荐新建lan口,把原来的lan停用3.新lan口配置:静态地址ipv4地址:主路由地址ipv4子网掩码:255.255.255.0ipv4网关:主路由地址使用自定义的DNS服务器:主路由地址关闭DHCP如果出现访问国内网站巨慢,慢到离谱那种请在旁路由执行以下代码iptables-tnat-IPOSTROUTING-jMASQUERADE并在网络—>防火墙中勾选丢弃无用数据包…

    2022年6月11日
    42
  • oracle 创建用户并给用户赋予权限

    oracle 创建用户并给用户赋予权限1登录打开cmd  sqlplus/nologSQL&gt;conn/assysdba;SQL&gt;createuserusername(zhangsan)identifiedbypassword(zhangsan);2 授予权限1)、默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限grantcreatesession…

    2022年5月12日
    112

发表回复

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

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