2013-11-24 32 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