map 取值

本文详细介绍了在Java中如何解析JSON字符串并遍历Map对象的四个不同方法,包括使用JSONArray和JSONObject的parse方法,以及两种不同的遍历Map的技巧。文章通过代码示例展示了每种方法的实现,包括性能较高的entrySet()迭代器方式和keySet()迭代器方式,以及不推荐的Map.entrySet和keySet()遍历方式。对于大规模数据处理,推荐使用entrySet()进行遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main方法

 public static void main(String[] args) {
        try {
            String json = "[
            {
                "user1":{
                "12":"age1",
                "23":"age2",
                "34":"age3"}
            },
            {
                "user2":{
                "90":"scrouse1",
                "87":"scrouse2",
                "98":"scrouse3"}
         }]";
            JSONArray jsonArray = JSONArray.parseArray(json);
            for (Object object : jsonArray) {
                Map<String, Object> map = JSONObject.parseObject(JSON.toJSONString(object));
            } catch(Exception e){

            }
        }
    }

demo1 根据entrySet()使用迭代器获取所有value值(性能较高)

        private void handler (Map < String, String > map){
            Iterator<Map.Entry<String, Object>> entryIt = map.entrySet().iterator();
            while (entryIt.hasNext()) {
                Map.Entry<String, Object> entity = entryIt.next();
                Map<String, String> entityValue = (Map<String, String>) entity.getValue();
                Iterator<Map.Entry<String, String>> entryIt = entityValue .entrySet().iterator();
                while (entryIt.hasNext()) {
                    Map.Entry<String, String> entity = entryIt.next();
                    String val = entity.getValue();
                    String busType = entity.getKey();
                    System.out.println(busType + val);
                }
            }

        }

demo2

        private void handler (Map < String, String > map){
			for(String k : map.keySet()){
			  Map<String, String> entityValue = (Map<String, String>) map.get(k);
			  for(String k2 : entityValue .keySet()){
			   System.out.println(k2+ entityValue .get(k2));
				}
			}
        }

以下两种不推荐使用

demo3 通过Map.entrySet遍历key和value,容量大时推荐使用

private void handler (Map < String, String > map){
			for(Map.Entry<String, String> entry : map.entrySet()){
			  Map<String, String> entityValue = (Map<String, String>) map.getValue;
			  for(Map.Entry<String, String> entry : entityValue.entrySet()){
			   System.out.println(k2+ entityValue .get(k2));
				}
			}
        }

demo4 根据keySet()使用迭代器获取所有value值(性能较低)

private void handler (Map < String, String > map){
		Iterator<String> it = map.keySet().iterator();
			while(it.hasNext()){
			  String key = it.getKey();
			  Map<String, String> entityValue = (Map<String, String>) map.get(key );
			  Iterator<String> it2 = entityValue .keySet().iterator();
			  while(it2 .hasNext()){
			  String key2 = it2.getKey();
			   System.out.println(key2 + it2.get(key2 ));
				}
			}
        }

转载https://blog.youkuaiyun.com/qq_19694251/article/details/113524049

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值