package demo;
import java.util.*;
import java.util.function.Consumer;
/*
* 4. class Worker{
private String name;
private Integer age;
private Double salary;
//补全构造方法、get/set方法、toString方法
}
要求:
① 利用Map集合存储以下信息:
key-id(Integer) -- value-工人对象(Worker)
1 -- (张三,27,10000)
2 -- (李四,23,7500)
3 -- (王五,25,6000)
...
② 遍历输出集合中所有的信息:id-工人信息
③ 输入一个id,查询是否存在,存在则输出该工人的信息,否则打印输出"查无此人!"
④ 统计工人的平均工资。
⑤ 输入一个id,删除此员工.
⑥ 输出工人工资大于7000的id号。
⑦ 输入一个员工姓名,查询集合中是否存在该员工,存在-将此员工的工资在原有的基础上加2000,
否则打印"不存在此姓名员工".
* */
public class Test04 {
public static void main(String[] args) {
//创建Worker类对象
Worker worker = new Worker("张三",27,10000D);
Worker worker1 = new Worker("李四",23,7500D);
Worker worker2 = new Worker("王五",25,6000D);
//创建map集合
Map<Integer,Worker> map = new HashMap<>();
//为map集合中添加元素
map.put(1,worker);
map.put(2,worker1);
map.put(3,worker2);
//③ 输入一个id,查询是否存在,存在则输出该工人的信息,否则打印输出"查无此人!"
//输入id
Scanner sc = new Scanner(System.in);
//打印提示语句
System.out.println("输入要查询的id");
//确定Scanner类对象的数据类型
int i = sc.nextInt();
//定义boolean类型变量
boolean bo = false;
//遍历map集合
Set<Integer> set = map.keySet();
for (Integer integer : set) {
if (map.containsKey(i)){
bo = true;
System.out.println(" 查询信息为: "+map.get(i));
break;
}
}
if (bo == false) System.out.println("没有这个人");
//④ 统计工人的平均工资。
//定义求和变量
double sum = 0 ;
//遍历集合
for (Integer integer : set) {
sum+= map.get(integer).getSalary();
}
System.out.println(" 平均工资为: "+sum / map.size());
// ⑤ 输入一个id,删除此员工.
//打印输出语句
System.out.println("输入要删除的id");
//定义Scanner类对象引用 输入id
int j = sc.nextInt();
map.remove(j);
//遍历map集合
set.forEach(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println(" 删除后信息 "+map.get(integer));
}
});
//⑥ 输出工人工资大于7000的id号。
//遍历集合
for (Integer integer : set) {
if (map.get(integer).getSalary()>7000D){
System.out.println(" 工资大于7000的员工 "+map.get(integer));
}
}
//⑦ 输入一个员工姓名,查询集合中是否存在该员工,存在-将此员工的工资在原有的基础上加2000,
// 否则打印"不存在此姓名员工".
String str = sc.next();
//需要的是值遍历 获取值遍历的对象方法
Collection<Worker> workers = map.values();
for (Worker worker3 : workers) {
if (str.equals(worker3.getName())){
worker3.setSalary(worker3.getSalary()+2000D);
}
}
//在用一次key遍历来完成
set.forEach(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println(map.get(integer));
}
});
}
}
//创建worker类
class Worker{
private String name;
private Integer age;
private Double salary;
public Worker() {
}
public Worker(String name, Integer age, Double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Worker{" +
"name='" + name + '\'' +
", age=" + age +
", salary=" + salary +
'}';
}
}
MAP集合练习题04
最新推荐文章于 2022-08-20 08:38:30 发布