Map嵌套Map遍历

废话不多说,直接上代码块!

import java.util.HashMap;
import java.util.Map;

/**
 * Map集合嵌套Map集合遍历
 * Created by aongi on 2017/4/28.
 * Version 1.0
 */
public class MapOf {
    public static void bl(HashMap<String, HashMap<String,String>> jd){
        for (Map.Entry<String, HashMap<String, String>> me : jd.entrySet()) {
            String classNameKey = me.getKey();
            HashMap<String, String> numNameMapValue = me.getValue();
            for (Map.Entry<String, String> nameMapEntry : numNameMapValue.entrySet()) {
                String numKey = nameMapEntry.getKey();
                String nameValue = nameMapEntry.getValue();
                System.out.println(classNameKey + ".." + numKey + ".." + nameValue);
            }
        }
    }
    public static void main(String[] args) {
        //定义服务员集合
        HashMap<String, String> fuy = new HashMap<String, String>();
        //定义厨师集合
        HashMap<String, String> cs = new HashMap<String, String>();
        //向酒店集合中,存储服务员信息
        fuy.put("服务员001", "小王");
        fuy.put("服务员002", "小李");

        cs.put("厨师001", "小张");
        cs.put("厨师002", "小龙");
        //定义酒店集合容器,键是员工类型,值是两种员工各自的集合容器
        HashMap<String, HashMap<String,String>> jd = new HashMap<String, HashMap<String,String>>();
        jd.put("服务员", fuy);
        jd.put("厨师", cs);

        bl(jd);
    }
}

还有一种简单的遍历

public static void bl(HashMap<String, HashMap<String,String>> jd){
        for(String a:jd.keySet()){
            HashMap<String,String> map =jd.get(a);
            for(String s:map.keySet()){
                String s1= map.get(s);
                System.out.println(a+"  "+s+"   "+s1);
            }
        }
    }
如果嵌套Map的层数比较少,可以使用多重循环来实现遍历。如果嵌套的层数比较多,可以使用递归来实现遍历。 以下是使用多重循环实现遍历的示例代码: ``` Map<String, Map<String, String>> map = new HashMap<>(); map.put("key1", new HashMap<>()); map.get("key1").put("subkey1", "value1"); map.get("key1").put("subkey2", "value2"); map.put("key2", new HashMap<>()); map.get("key2").put("subkey1", "value3"); map.get("key2").put("subkey2", "value4"); for (Map.Entry<String, Map<String, String>> entry : map.entrySet()) { String key = entry.getKey(); Map<String, String> submap = entry.getValue(); for (Map.Entry<String, String> subentry : submap.entrySet()) { String subkey = subentry.getKey(); String value = subentry.getValue(); System.out.println("key: " + key + ", subkey: " + subkey + ", value: " + value); } } ``` 以下是使用递归实现遍历的示例代码: ``` Map<String, Object> map = new HashMap<>(); map.put("key1", new HashMap<>()); ((Map<String, Object>) map.get("key1")).put("subkey1", "value1"); ((Map<String, Object>) map.get("key1")).put("subkey2", "value2"); map.put("key2", new HashMap<>()); ((Map<String, Object>) map.get("key2")).put("subkey1", "value3"); ((Map<String, Object>) map.get("key2")).put("subkey2", "value4"); public void traverse(Map<String, Object> map) { for (Map.Entry<String, Object> entry : map.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); if (value instanceof Map) { traverse((Map<String, Object>) value); } else { System.out.println("key: " + key + ", value: " + value); } } } traverse(map); ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值