java - java对不同类的对象进行排序

标签 java class sorting collections

我有以下任务。我陷入了问题a)。 创建类,描述按小时工资和固定工资的员工。提出您的建议 关于类(Class)之间的关系。实行月平均工资计算办法。为了 小时工资的员工使用以下公式:“平均月薪= 20.8*8*小时费率”,对于员工 固定付款——“平均月薪=固定月付款”。编写注释良好的代码 解决接下来的问题 a) 按月平均工资降序对员工集合进行排序。如果是 同工同酬——名副其实。写下收集到的所有员工的 ID、姓名和月薪。 b) 写出集合中前五名员工的信息(问题 a)。 c) 写入集合中最后三名员工的 ID(问题 b)。 d) 编写代码以从文件中读取和写入这些对象的集合。 e) 编写代码来处理传入文件的不正确格式。

我创建了以下类,但我不知道如何对不同类中的不同对象进行排序。请帮助我!!!

import java.util.*;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        List<EmployeeFixedPayment> coll = new ArrayList<Employee>();

        EmployeeHourlyWage a = new EmployeeHourlyWage("Edd", "Goo", 23, 4);
        EmployeeHourlyWage b = new EmployeeHourlyWage("Tedd", "Foo", 2, 5);
        EmployeeHourlyWage c = new EmployeeHourlyWage("Bob", "Bee", 4, 2);
        EmployeeHourlyWage d = new EmployeeHourlyWage("Kate", "See", 2, 5);
        EmployeeFixedPayment e = new EmployeeFixedPayment("Lisa", "Lee", 7, 500);
        EmployeeFixedPayment f = new EmployeeFixedPayment("Mike", "Ree", 10,
                450);
        EmployeeFixedPayment g = new EmployeeFixedPayment("Izia", "Kurz", 13,
                1000);
        EmployeeFixedPayment j = new EmployeeFixedPayment("Aisha", "Moore", 20,
                800);

        coll.add(a);
        coll.add(b);
        coll.add(c);
        coll.add(d);
        coll.add(e);
        coll.add(f);
        coll.add(g);
        coll.add(j);

        Collections.sort(coll);

        // System.out.println(coll.size());
        for (Employee i : coll) {
            System.out.print(i.secondName + " ");
        }

    }

}

public class Employee {
    String firstName;
    String secondName;
    int id;

    public Employee(String firstName, String secondName,int id){
        this.firstName = firstName;
        this.secondName = secondName;
        this.id = id;
    }


    public void printEmployee(){
        System.out.println(firstName+" "+secondName+" "+id);
    }


    public String getSecondName() {
        return secondName;
    }

    public void setSecondName(String secondName) {
        this.secondName = secondName;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

}

public class EmployeeFixedPayment extends Employee {
    double fixedPayment;

    public EmployeeFixedPayment(String firstName, String secondName, int id,
            double salary) {
        super(firstName, secondName, id);
        fixedPayment = salary;
    }

    public double getSalary() {
        return fixedPayment;
    }

    public void setSalary(double salary) {
        fixedPayment = salary;
    }
}

public class EmployeeHourlyWage extends Employee {
    Double hourlyWage;

    public EmployeeHourlyWage(String firstName, String secondName, int id, double hourlyRate) {
        super(firstName, secondName, id);
        hourlyWage = 20.8*8*hourlyRate;
    }
    public double getWage(){
        return hourlyWage; 
    }

    public void setWage(double rate) {
        hourlyWage = 20.8*8*rate;
    }

}

最佳答案

实现Comparable Employee 的接口(interface)。这样,当您调用 Collections.sort(coll) 时,它们就会以正确的方式进行排序。

我个人发现CompareToBuilder类对此有帮助。

关于java - java对不同类的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23957393/

相关文章:

Java 执行具有多次重试和超时的任务

java - Mockito 模拟测试嵌套函数调用

java - 枚举类型的Android单元测试

java - zk mvc 2 .zul 共享相同的 Controller

php - 如何在 Laravel 中添加类别名

c++ - 在C++中将类的成员函数分配给函数指针

Java排序列表,首先按长度然后按字母顺序排列流

ios - 如何在 Objective-C 中将参数从 .m 传递到另一个 .m

java - 比较方法

java - Arrays.sort(pointsBySlope, p.SLOPE_ORDER) 是否取决于pointsBySlope[] 是什么?