【问题标题】:how to compare 2 set values in the same arraylist in java如何在java中比较同一个arraylist中的2个集合值
【发布时间】:2021-09-08 12:16:57
【问题描述】:

我有一个员工数组列表。在此范围内,id 和 name 是不可更改的,而合同和计划的时间是可变的。

我已经解决了下面所述的前 3 个问题,但坚持到了最后一个问题。 除了下面的 3 个 Classe,我还有 Class Workspace。

我有班级员工。

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

主要是

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

在最后一个问题中,我希望打印计划少于合同规定的员工姓名。

【问题讨论】:

  • “比合同规定的计划少”是什么意思。意思是?能举个例子吗?
  • 我想比较 H.InPlanning(1700) 和 H.Contract(1880);。当 InPlanning 低于 Contract 时,显示名称。所以在这种情况下,它应该打印 H.

标签: java arrays compare setter


【解决方案1】:

以下应该可以根据您的需要工作:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多