我有一个包含姓名、年龄、薪水等的数组列表。
我想按名称对列表进行排序。
以下是我在类里面的内容:
//Sort by Name
public ArrayList<Employee> sortByName()
{
Collections.sort(employees);
return employees;
}
我这里有一个比较器(我不确定是否使用过):
import java.util.*;
public class EmployeeNameComparator implements Comparator<Employee>
{
ArrayList<Employee> employees = new ArrayList<Employee>();
//METHODS
//Name Compare
public int compare(Employee object1, Employee object2)
{
return object1.getName().compareTo(object2.getName());
}
}
这是我制作的测试器的相关部分:
CompanyDataBase database = new CompanyDataBase();
database.addEmployee(new Employee("John James", 34, 45000));
database.addEmployee(new Employee("Josie Gibson", 19, 19000));
database.addEmployee(new Employee("Luke Marsden", 28, 30000));
database.addEmployee(new Manager("Aaron Morgan", 28, 44000, 5500));
System.out.println("\n\nSORT BY NAME");
//Collections.sort(database.getEmployees());
database.sortByName();
for(Employee currEmployee: database.getEmployees())
{
System.out.println(currEmployee.getDescription());
}
我已经尝试了很多方法,但似乎没有任何效果,有谁知道我哪里出错了或者如何让它发挥作用?谢谢。
最佳答案
使用需要第二个参数的比较器按名称对对象进行排序。
Collections.sort(employees, new EmployeeNameComparator());
请参阅example使用自定义比较器。
关于java - Java ArrayList 中的名称排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180830/