Java 如果某些参数相等,如何对对象参数进行排序

Java 如果某些参数相等,如何对对象参数进行排序,java,sorting,Java,Sorting,我有一个ArrayList,其中一些对象包含3个参数(id、name、salary)。未分类列表: public class Employee { private int id; private String name; private double salary; public Employee(int _id, String _name, double _salary) { this.id = _id;

我有一个
ArrayList
,其中一些对象包含3个参数(id、name、salary)。未分类列表:

public class Employee {
        private int id;
        private String name;
        private double salary;

        public Employee(int _id, String _name, double _salary) {
            this.id = _id;
            this.name = _name;
            this.salary = _salary;
        }

        public int getEmployeeID () {
            return this.id;
        }


        public String getEmployeeName () {
            return this.name;
        }

        public double getMonthSalary() {
            return this.salary;
        }

        public static void main(String[] argc) {
            ArrayList<Employee> list = new ArrayList<Employee>();
            list.add(new Employee(1, "asd", 1300));
            list.add(new Employee(7, "asds", 14025)); // this
            list.add(new Employee(2, "nikan", 1230));
            list.add(new Employee(3, "nikalo", 12330));
            list.add(new Employee(8, "aaaa", 14025)); // and this are equal
            list.add(new Employee(4, "nikaq", 140210));
            list.add(new Employee(5, "nikas", 124000)); 
            list.add(new Employee(6, "nikab", 14020));
        }
}

Java有一个内置的机制来处理这样的问题。你不应该重新发明轮子:

list.sort(Comparator.comparing(Employee::getMonthSalary)
                    .thenComparing(Employee::getEmployeeName));

Collections.sort()按自然顺序排序。尝试传递一个比较器来比较您想要的方式或实现compareTo。

您能使用java 8吗??@ΦXocę웃Пepeúpa谢谢,Mureinik已经回答了我的问题,那么如果我有另一个类的构造函数扩展Employee.java呢?e、 g
Employee2(int-id,String-name,double-salary)
如何对包含
Employee.add的
ArrayList
进行排序(new Employee2(1,“test”,1000);
?如果
Employee2
扩展
Employee
,它仍然是
Employee
的一种类型,同样的代码也适用于它。我得到一个错误:
Employee.sort.sort(Comparator.comparing(Employee::getEmployeeSalary)和etc
-
无法解析方法GetMonthSalary
无法解析方法getEmployeeName
。但是如果
Employee.sort(Comparator.comparing(Employee2::getEmployeeSalary))等等
很有效!怎么了?@phen0men对我来说很好,所以这里显然缺少了一些东西。但是,阅读这样的评论中的代码是非常困难的。你能发布一个新的问题,包含完整的代码和确切的错误,以便更容易回答吗?
list.sort(Comparator.comparing(Employee::getMonthSalary)
                    .thenComparing(Employee::getEmployeeName));