1. 程式人生 > 其它 >四十一、集合的巢狀

四十一、集合的巢狀

  • 總述:任何集合內部都可以儲存其它任何集合

1、List巢狀List

public class Test{
    public static void main(String[] args){
        /*
			假如有兩個班的學生姓名,它們分別儲存在兩個集合中:
		*/
        //第一個班
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("迪麗熱巴");
        list1.add("古力娜扎");
        list1.add("柳巖");
        list1.add("楊冪");
        
        //第二個班
        ArrayList<String> list2 = new ArrayList<>();
        list2.add("蔡徐坤");
        list2.add("楊坤");
        list2.add("陳偉霆");
        list2.add("李易峰");
        
        //將兩個集合儲存到一個集合中
        ArrayList<ArrayList<String>> allList = new ArrayList<>();
        allList.add(list1);
        allList.add(list2);
        
        //遍歷allList,取出每個ArrayList
        for(ArrayList<String> list : allList){
            //遍歷每個班的ArrayList
            for(String s : list){
                System.out.println(s);
            }
        }
    }
    
}

2、List巢狀Map

public class Test{
    public static void main(String[] args){
        /*
        	有兩個班的學員,分別儲存在兩個Map中
        */
        //第一個班:
        Map<String,String> map1 = new HashMap<>();
        map1.put("it001","迪麗熱巴");
        map1.put("it002","古力娜扎");
        
        //第二個班:
        Map<String,String> map2 = new HashMap<>();
        map6.put("heima001","蔡徐坤");
        map2.put("heima002","李易峰");
        
        //將兩個班的map儲存到一個ArrayList中
        ArrayList<Map<String,String>> allList = new ArrayList<>();
        allList.add(map1);
        allList.add(map2);
        
        //遍歷allList,取出每個Map
        for(Map<String,String> map : allList){
            //遍歷map
            Set<String> keys = map.keySet();
            for(String key : keys){
                System.out.println(key + " - " + map.get(key));
            }
        }
    }
}

3、Map巢狀Map

public class Test{
    public static void main(String[] args){
        /*
        有兩個班,班號分別為:"黑馬188期"和"黑馬189期",兩個班學員的姓名分別儲存在兩個Map中
        */
        //"黑馬188期":
        Map<String,String> map1 = new HashMap<>();
        map1.put("it001","迪麗熱巴");
        map1.put("it002","古力娜扎");
        
        //"黑馬189期":
        Map<String,String> map2 = new HashMap<>();
        map2.put("heima001","蔡徐坤");
        map2.put("heima002","李易峰");
        
        //將兩個班的Map連同對應的"班號"一同儲存在一個Map中
        Map<String,Map<String,String>> allMap = new HashMap<>();
        allMap.put("黑馬188期",map1);
        allMap.put("黑馬189期",map2);
        
        //遍歷allMap
        Set<String> keys = allMap.keySet();
        for(String k : keys){
            System.out.println(k + ":");
            //取出對應的map
            Map<String,String> map = allMap.get(k);
            //遍歷map
            Set<String> keys2 = map.keySet();
            for(String k2 : keys2){
                System.out.println(k2 + " = " + map.get(k2));
            }
        }
    }
}