如何比较 java 中同一数组列表中的 2 个设置值

how to compare 2 set values in the same arraylist in java

我有一个员工列表。其中id和name是不可更改的,而合同和计划的时间是可以更改的。

我已经解决了下面所述的前 3 个问题,但在最后一个问题上卡住了。 除了下面的 3 Classe,我还有 Class 工作区。

我有 Class 员工。

public class Employee {
   
    public int id;
    public String name;
    public int HoursWork;
    public int HoursPlanned;   
}

这扩展到 Class 专家

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);        
    }            
}

主要是

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);
    }
}