如何在java中比较同一个数组列表中的两个集合值



我有一个雇员数组列表。其中id和name不可更改,而hours contract和planned可以更改。

我已经解决了下面的前三个问题,但最后一个问题卡住了。除了下面的3类,我还有类工作区。

我有Class Employee。

public class Employee {

public int id;
public String name;
public int HoursWork;
public int HoursPlanned;   
}

这延伸到类专家

public class Specialist extends Employee { 

public Specialist(int id, String name){
this.id=id;
this.naam=naam;
this.UrenWerk=0;
this.UrenPlan=0;        
}

public void InPlanning(int Planned){
HoursPlanned+=Planned;
Workspace.setTotalHoursPlanned(HoursPlanned);
}

public void Contract(int Available){
HoursWork+=Available;
Workspace.setTotalHoursAvailable(HoursWork);        
}            
}

在main

public class Main {

public static void main(String[] args) {

Specialist H = new Specialist(1,"H");
Specialist R = new Specialist(2,"R");
Specialist P = new Specialist(3,"P");
Specialist K = new Specialist(4,"K");

List<Specialist> LijstSpecialist = new ArrayList <>();
LijstSpecialist.add(H);
LijstSpecialist.add(R);
LijstSpecialist.add(P);
LijstSpecialist.add(K);

Workspace A = new Workspace (LijstSpecialist);
H.InPlanning(1700);
R.InPlanning(1400);
P.InPlanning(1880);
K.InPlanning(300);
H.Contract(1880);
R.Contract(1800);
P.Contract(1890);
K.Contract(1700); 
System.out.println("available " + A.TotalHoursAvailable()+ " hours.");

System.out.println("Planned " + A.getTotalHoursPlanned()+ " hours.");

System.out.println("To be planned " + (A.TotalHoursAvailable() - A.getTotalHoursPlanned())+ " hours.");

System.out.println("Employees to be planned ");

在最后一个问题中,我希望打印的员工名单比合同规定的要少。

如果您需要的话,下面应该可以工作:

public class Main {

public static void main(String[] args) {
Specialist H = new Specialist(1,"H");
Specialist R = new Specialist(2,"R");
Specialist P = new Specialist(3,"P");
Specialist K = new Specialist(4,"K");
List<Specialist> LijstSpecialist = new ArrayList <>();
LijstSpecialist.add(H);
LijstSpecialist.add(R);
LijstSpecialist.add(P);
LijstSpecialist.add(K);
Workspace A = new Workspace (LijstSpecialist);
H.InPlanning(1700);
R.InPlanning(1400);
P.InPlanning(1880);
K.InPlanning(300);
H.Contract(1880);
R.Contract(1800);
P.Contract(1890);
K.Contract(1700); 
List<String> specialistsToBePlanned = LijstSpecialist.stream().filter((specialist -> specialist.HoursPlanned < specialist.HoursWork))
.map(Specialist::getName)
.collect(Collectors.toList());
System.out.println("available " + A.TotalHoursAvailable()+ " hours.");

System.out.println("Planned " + A.getTotalHoursPlanned()+ " hours.");

System.out.println("To be planned " + (A.TotalHoursAvailable() - A.getTotalHoursPlanned())+ " hours.");
System.out.println("Employees to be planned " + specialistsToBePlanned);
}
}