我正在研究一个项目,该项目根据参加者的工作时间来计算参加聚会的志愿者的费用。
以下是正确的:
- 员工可以在多方工作
- 一个聚会有很多员工
- 员工可以选择在特定聚会上工作多少小时。
例如:人员A决定在甲方工作4小时,在乙方工作5小时,人员B决定在甲方工作3小时,在乙方工作6小时。 -知道有多少员工参加聚会很重要,因为预算将在员工之间分配。
我想计算给定方的每位志愿者的费用 我怎么知道谁在哪个聚会上工作了几个小时? 我认为我现在编写的代码不是最佳选择,因为对象被存储两次。如果我删除了Party类的雇员列表,我怎么知道有多少雇员在党工作?
public class Party {
private List<employee> employees;
//other attributes
//methods
}
public class Employee {
private List<Hours> hours;
// other attributes
//methods
}
public class Hours{
private Party party;
private double hours;
//other attributes
//methods
}
答案 0 :(得分:1)
定义代表关系的类
class Employment{
private Party party;
private Employee employee;
private Hours hours;
// ...
}
创建工作清单
List<Employment> employments;
答案 1 :(得分:0)
我不明白为什么您需要在Party和Employee之间使用双重引用,并且Hour类似乎代表了这种关系
public class Party {}
public class Employee {
private List<Hours> hours;
public void addWork(Party party, int hours) {
hours.add(new Hour(party, hours));
}
}
public class Hours{
private Party party;
private double hours;
}
以上是您的基本数据类,但是您还需要一些控制器类,您可以在其中创建新员工和聚会等。在此类中,典型的是您将列出所有员工,例如获取所有在特定聚会上工作的小时数,您可以给一个清单employees
和一个聚会p
List<Hours> hoursWorked = employess.stream().flatMap(e -> e.hours.stream()).filter(h->h.getParty().equals(p)).collect(Collectors.toList());