用迭代器Iterator或者for循环 遍历HashMap

1.什么是HashMap

  • 继承自父类 AbstractMap
  • 直接已知子类:CurrentHashMap,EnumMap,HashMap,IdentityHashMap,TreeMap,WeakHashMap
  • 具体可参考在线API手册

2.遍历之前 以ERP为模型 建实体类 Department 和 Person

  • Department 类:
数据类型 属性 描述
int did 部门编号
String name 部门名称
  • Person 类(存储的是一个集合,里面有许多信息):
数据类型 属性 描述
int pid 人员编号
String name 人员姓名
String sex 人员性别
String age 年龄
String(描述的不准确) startTime 入职时间

这里是用分层的概念去创建实体类 即在项目文件夹 src 下 Untity
如何把数据即Person放进所属的Department中? HashMap

 	/**
     * 把 people 合理的放到 department 进行存储
     */
    Map> maps = new HashMap>();

    @Override
    public Map> doPeopelSaveToDepartment(Department department, List people) {

        try{
        	/**
   		 	 * Map放入 用put()方法
   		 	 * 移除 用?
     		*/
            maps.put(department,people);
            return maps;
        }catch (Exception e){
            return maps;
        }
    }

3.遍历

3.1 for循环

@Override
    public void doPrintAllF() {

        for(Department dept:maps.keySet()){
            /**
             * 找到全部的部门进行遍历
             */
            System.out.println("当前部门名称为:"+dept.getName());
            /**
             * 当前部门的人员集合
             */
            List people = maps.get(dept);
            System.out.println("员工编号\t员工名称\t员工性别\t员工年龄\t入职时间");
            if(people!=null){
                for(int i=0;i

3.2 迭代器

@Override
    public void doPrintAllI() {
        /**
         * 迭代器遍历department 找出dp信息
         */
        Iterator itd = maps.keySet().iterator();
        while (itd.hasNext()) {
            /**
             * 获取人员集合  从dp中来
             */
            Department dp = (Department) itd.next();
            List pl = maps.get(dp);
            /**
             * 遍历人员信息集合 输出到控制台
             */
            Iterator ip = pl.iterator();
            while (ip.hasNext()) {
                Person p = ip.next();
                System.out.println(p);
            }
        }
    }

4.实现ERP的思维导图

用迭代器Iterator或者for循环 遍历HashMap_第1张图片
彩蛋:每日面试题
1.继承自Collection的子类有哪些?

2.接口和抽象类的区别?

3.List<>从中申明一种集合 String 类型?

答案见下篇文章

你可能感兴趣的:(遍历)