黑马程序员技术交流社区

标题: Map集合中嵌套另一个Map集合 HashMap [打印本页]

作者: 七色★碎羽    时间: 2015-9-10 23:00
标题: Map集合中嵌套另一个Map集合 HashMap
package cn.itcast.maptest;
/*
* Map集合中嵌套另一个Map集合  HashMap
*
* 数据结构:
*   传智播客 -- 容器,存储班级,存储基础班和就业班
*      基础班 -- 容器   学号和姓名
*        001 张三  键值对
*        002 李四
*      就业班
*        001 王五
*        002 赵六
*        
*   传智播客 集合容器,存储的是班级容器
*   传智播客集合<String班级名字, 基础班或者就业班集合容器>
*   基础班集合<String,String>
*/
import java.util.*;
public class MapMapTest {
        public static void main(String[] args) {
                //创建基础班集合容器,键和值都是字符串,键是学号,值是姓名
                HashMap<String,String>  javase = new HashMap<String, String>();
                //创建就业班集合容器,键和值都是字符串,键是学号,值是姓名
                HashMap<String,String>  javaee = new HashMap<String, String>();
                //创建传智播客集合,键是班级名字,值是班级集合
                HashMap<String,HashMap<String,String>> czbk =
                                new HashMap<String, HashMap<String,String>>();
               
                //基础班集合,存储学号姓名
                javase.put("001", "张三");
                javase.put("002", "李四");
                //就业班集合,存储学号姓名
                javaee.put("001", "王五");
                javaee.put("002", "赵六");
               
                //班级集合,存储到传智播客集合
                czbk.put("基础班", javase);
                czbk.put("就业班", javaee);
               
                //keySet(czbk);
                entrySet(czbk);
        }
        public static void entrySet(HashMap<String,HashMap<String,String>> czbk){
                 //czbk集合方法entrySet,集合键值对关系对象Map.Entry存储到Set集合
                Set<Map.Entry<String, HashMap<String,String>>> set = czbk.entrySet();
                //迭代存储czbk集合的键值对关系对象的,Set集合
                Iterator<Map.Entry<String, HashMap<String,String>>> it = set.iterator();
                while(it.hasNext()){
                        //it.next取出是什么 czbk集合的键值对关系对象Map.Entry
                        Map.Entry<String, HashMap<String,String>> classEntry = it.next();
                        //通过键值对关系对象方法getKey getValue 分别获取键值对
                        //获取czbk集合中的键,班级的名字
                        String classNamekey = classEntry.getKey();
                        //值是HashMap集合,存储的是学号和姓名
                        HashMap<String,String> classMap = classEntry.getValue();
                        //集合classMap方法entrySet,将集合键值对关系对象Map.Entry存储到Set集合
                        Set<Map.Entry<String, String>> classSet = classMap.entrySet();
                        //迭代班级的Set集合
                        Iterator<Map.Entry<String, String>> classIt = classSet.iterator();
                        while(classIt.hasNext()){
                                //classIt.next获取出来的是,班级集合的键值对关系对象
                                Map.Entry<String, String> entry = classIt.next();
                                //班级集合键值对关系对象方法 getKey getValue获取键值对
                                //键是班级集合学号
                                String number = entry.getKey();
                                //值是班级集合姓名
                                String name = entry.getValue();
                                System.out.println(classNamekey+"..."+number+"..."+name);
                        }
                }
        }
       
        public static void keySet(HashMap<String,HashMap<String,String>> czbk){
                //使用czbk集合方法keySet,将大集合的键,存储到Set集合
                Set<String>  set = czbk.keySet();
                //迭代Set集合
                Iterator<String> it = set.iterator();
                while(it.hasNext()){
                        //it.next获取出来的,大集合czbk的键
                        String classNamekey = it.next();
                        //使用集合czbk方法get通过键获取值,值是存储班级信息的集合
                        HashMap<String,String> classMap = czbk.get(classNamekey);
                        //集合classMap方法keySet 班级集合键存储到Set集合
                        Set<String> classSet = classMap.keySet();
                        Iterator<String> classIt = classSet.iterator();
                        while(classIt.hasNext()){
                                //next方法获取出的是班级集合中键,学号
                                String number = classIt.next();
                                //集合classMap方法get通过键获取值
                                String name = classMap.get(number);
                                System.out.println(classNamekey+"..."+number+"..."+name);
                        }
                }
        }
}















欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2