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

博客围绕Java展开,介绍了HashMap,它继承自AbstractMap类。以ERP为模型创建了Department和Person实体类,并将Person数据存入Department使用HashMap。还讲解了使用for循环和迭代器对其进行遍历,最后提到实现ERP的思维导图,结尾给出每日面试题。

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

1.什么是HashMap

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

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

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

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

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

    @Override
    public Map<Department,List<Person>> doPeopelSaveToDepartment(Department department, List<Person> 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<Person> people = maps.get(dept);
            System.out.println("员工编号\t员工名称\t员工性别\t员工年龄\t入职时间");
            if(people!=null){
                for(int i=0;i<people.size();i++){
                    /**
                     * 获取所有部门的每个人 集合:size方法 数组:length方法
                     */
                    Person person = people.get(i);

                    System.out.println(person.getPid()+"\t"+person.getName()+"\t"+person.getSex()+"\t"+person.getAge()+"\t"+person.getStartTime());
                }
            }
            System.out.println();
        }
    }

3.2 迭代器

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

4.实现ERP的思维导图

在这里插入图片描述
彩蛋:每日面试题
1.继承自Collection的子类有哪些?

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

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

答案见下篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉丁是我扔掉的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值