2013-11-24 2 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()); 
    } 

Я пробовал это множество путей, но ничто не кажется рабочим g, кто-нибудь знает, где я ошибаюсь или как это работает? Благодарю.

+2

Смотрите перегруженный 'Collections.sort (List, компаратор)' метод. –

+0

Возможный дубликат [Сортировка коллекции объектов] (http://stackoverflow.com/questions/1206073/sorting-a-collection-of-objects) –

ответ

4

Сортировка объектов по имени с использованием компаратора требует второго параметра.

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

См example использование пользовательского компаратора.

Смежные вопросы