2013-11-24 31 views
2

我有一个包含姓名,年龄,工资等的列表列表。在Java ArrayList中排序名称?

我想按名称对列表进行排序。

以下是我在我的课:

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

我试过这些负载的方式,但似乎没有任何工作克,有没有人知道我要去哪里错误或如何使它工作?谢谢。

+2

参见重载'Collections.sort(列表,比较器)'方法进行排序的集合。 [排序对象的集合]的 –

+0

可能重复(http://stackoverflow.com/questions/1206073/sorting-a-collection-of-objects) –

回答

4

按名称使用所需要的第二参数的比较器对象。

Collections.sort(employees, new EmployeeNameComparator()); 

请参阅使用自定义比较器的example