map循环遍历取值_Java中Map的4种遍历方式

edc3c19835dfbc9eff072bc8bfb76e98.png

第一种方式:这是平常用的最多也最可取的一种遍历方式。

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

第二种方式:如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet,该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。

// 遍历keyfor (String key : map.keySet()) {
     System.out.println("key=" + key);
   }// 遍历valuefor (Object value : map.values()) {
     System.out.println("value=" + value);
   }

第三种方式:使用Iterator进行遍历Map。

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

2d7d4189deb739a74ae8aeff4d7abb2f.png

注意:在遍历过程中remove操作,只能用iterator遍历方式,其他遍历会抛异常,(顺便补充,list通过Iterator方式可正确遍历完成remove操作,直接调用list的remove方法就会抛异常)。

Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator();while (it.hasNext()) {Map.Entry<String, Object> entry = it.next();String key = entry.getKey();if (key.equals("1")) {
       System.out.println("remove的key= " + key);
       it.remove();
       System.out.println("key=" + key + "已移除");
   }
   }for (String key : map.keySet()) {
     System.out.println("key=" + key + ",value=" + map.get(key));
   }

list的遍历中remove。

//会抛ConcurrentModificationException异常for(String str : list){list.remove(str);
}//正确遍历移除方式
Iterator it = list.iterator();while(it.hasNext()){
 it.next();
 it.remove();
}

第四种遍历方式:通过键找值遍历,缺点,效率低,本身从键取值是耗时的操作。

for (String key : map.keySet()) {
     Object value = map.get(key);
     System.out.println("key=" + key + ",value=" + value);
   }
694aeee349f8e291d517c7c515c1916a.gif

目前10000+人已加入我们

点击关注或菜单咨询

带你了解更多IT的规则

2e11c8b07013a5c804976b6a36d10d5e.gif 68f91366a7c951c733cfd8bf62e91104.gif 3db82a83f7f8e0aaa56b0036e5aa35fe.gif da311f58c2771724a5cd245cad62c390.gif b0494ce859dd8c6dcd93dcde81e6642c.gif b834bae89cbaf25126cb63a1b6ccbc70.gif ee1ba51ee339f868b41b64ea196540fa.gif f07803389e189bb3beb667aa3baa7101.png

a0604993b3e550262019a929b1d63501.gif e196c74b2214c728ecf69d1191fea8b6.gif 35d91d7bf67226f9567064609e3c75e6.gif c953029c39ba666b4a5fd1e72d80a4c4.gif 12f79a5a237bb80768d6d71609241f60.gif eac8c8f35d74ffc7995a4e067d405a37.gif e9915507840c74c0984f97579fda394f.gif c9d7bebb7f418bf910caacd738c861ce.gif

e0917e7e532795fe80e41abd03b0acb9.png

解锁更多精彩内容

5f176724df3699c58b45655676202896.png

电话:0371—68636863/19937607863

地址:河南省郑州高新区翠竹街6号国家863中部软件园

网站:www.863soft.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值