HashMap的四种遍历方式

HashMap的四种遍历方式

第一种通过entrySet方式

for(Map.Entry<String,String> entry :map.entrySet()) {
             System.out.println("key==="+entry.getKey()+" 
                                value==="+entry.getValue());
        }

第二种通过迭代器方式

Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();
        while (it.hasNext()){
            Map.Entry<String,String> e = it.next();
            System.out.println("key==="+e.getKey()+" value==="+e.getValue());
        }

第三种遍历keySet方式

for (String s : map.keySet()){
            System.out.println("key==="+s+" value==="+map.get(s));
        }

此方式遍历效率较低,遍历的同时还要再根据key取一次value。

第四种lambda表达式

map.forEach((k,v)->{
            System.out.println("key==="+k+" value==="+map.get(k));
        });

Java8新特性,用这种方式代码最为简洁。

### Java HashMap遍历方式 HashMap 是 Java 中常用的数据结构之一,用于存储键值对。以下是几种常见的 HashMap 遍历方式,每种方式都有其特点和适用场景。 #### 1. 使用 `entrySet` 遍历键值对 通过 `entrySet()` 方法可以获取 HashMap 中所有键值对的集合,然后使用迭代器或增强型 for 循环进行遍历。这种方式效率较高,因为它只需遍历一次集合即可同时获取 key 和 value[^1]。 ```java Map<Object, Object> map = new HashMap<>(); map.put("caocao", "11"); map.put("liubei", "22"); map.put("sunquan", "33"); for (Map.Entry<Object, Object> entry : map.entrySet()) { System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue()); } ``` #### 2. 使用 `keySet` 遍历键 通过 `keySet()` 方法可以获取 HashMap 中所有键的集合,然后逐一获取对应的值。这种方式需要两次访问集合(一次获取 key,一次获取 value),因此效率略低于 `entrySet`[^3]。 ```java for (Object key : map.keySet()) { System.out.println("key: " + key + ", value: " + map.get(key)); } ``` #### 3. 使用 `values` 遍历值 如果只需要获取 HashMap 中的所有值,可以通过 `values()` 方法直接获取值的集合。这种方式适用于不需要键的情况。 ```java for (Object value : map.values()) { System.out.println("value: " + value); } ``` #### 4. 使用 JDK 8 的 `forEach` 方法 从 JDK 8 开始,可以使用 Lambda 表达式结合 `forEach` 方法简化遍历操作。这种方式代码更加简洁且性能较好[^3]。 ```java map.forEach((key, value) -> { System.out.println("key: " + key + ", value: " + value); }); ``` #### 5. 在遍历过程中删除元素 在遍历 HashMap 时,如果需要删除某些元素,必须使用迭代器的 `remove` 方法以避免并发修改异常[^2]。以下是一个优雅的实现: ```java Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, Integer> entry = iterator.next(); if (entry.getValue() % 2 == 0) { iterator.remove(); } } ``` ### 总结 以上是 Java 中 HashMap 的几种常见遍历方式,具体选择哪种方式取决于实际需求。如果需要同时访问 key 和 value,推荐使用 `entrySet` 或 `forEach`;如果只需要访问 key 或 value,则可以选择 `keySet` 或 `values`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值