1.什么是HashMap
- 继承自父类 AbstractMap<K,V> 类
- 直接已知子类: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<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 类型?