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