Java中如何对比同一ArrayList内员工的合同工时与计划工时
实现步骤
1. 先修正Specialist类的编译错误
你现有Specialist构造函数里的变量名存在拼写错误,先修正才能正常运行:
public Specialist(int id, String name){ this.id = id; this.name = name; // 原代码的naam拼写错误,修正为父类定义的name this.HoursWork = 0; // 原代码UrenWerk修正为父类定义的HoursWork this.HoursPlanned = 0; // 原代码UrenPlan修正为父类定义的HoursPlanned }
2. 新增打印逻辑
在Main类main方法的末尾,System.out.println("Employees to be planned ");代码后新增遍历判断逻辑即可,两种写法任选:
写法1:for-each循环(易读性高)
// 遍历所有员工,判断计划工时是否低于合同工时 for (Specialist specialist : LijstSpecialist) { if (specialist.HoursPlanned < specialist.HoursWork) { System.out.println(specialist.name); } }
写法2:Stream流(Java 8+支持,写法简洁)
LijstSpecialist.stream() .filter(s -> s.HoursPlanned < s.HoursWork) .forEach(s -> System.out.println(s.name));
运行效果
按照你给出的测试数据,最终会输出H、R、P、K四个员工姓名,全部符合「计划工时低于合同工时」的筛选条件。
内容的提问来源于stack exchange,提问作者Cynthia de Rooy
相关产品推荐
相关产品推荐

