2017-01-02 36 views
0

我的工作清单列表进行排序和下面是我当前的代码片段的Java:排序列表的列表与中将sortOrder

我有员工POJO像下面

List<Employee> employeesList = new ArrayList<Employee>(); 
employeesList.add(employee01); 
employeesList.add(employee02); 

现在我有员工PO​​JO包含

private int employeeId; 
private String employeeName; 
private List<EmployeeProgram> employeePrgoram = new ArrayList<EmployeeProgram>(); 
private int sortOrder; 

现在,EmployeeProgram对象包含

private int programId; 
private String programName; 
private int programCount; 
private int sortOrder; 

现在,我想为“员工”以及“EmployeeProgram”分配sortOrder

我知道与Comparator作品的collections.sort。但不知道它是如何可能的?

在这方面帮助我。提前致谢。

+2

[按属性排序自定义对象的ArrayList的可能的副本](http://stackoverflow.com/questions/2784514/sort-arraylist-of-custom-objects-by-property) – abbath

+0

这是不明确的,重新努力实现。 –

+0

[这里](http://stackoverflow.com/a/18441978/3042145)是如何对数组列表进行排序的示例。希望它有帮助 – kism3t

回答

0

您可以实现Comparable接口,然后重写compareTo方法如下

public int compareTo(Employee emp){ 
    if(sortOrder==emp.sortOrder) 
    return 0; 
    else if(sortOrder>emp.sortOrder) 
    return 1; 
    else 
    return -1; 
} 

为EmployeeProgram 类重复相同和覆盖此方法

public int compareTo(EmployeeProgram empProg){ 
    if(sortOrder==empProg.sortOrder) 
    return 0; 
    else if(sortOrder>empProg.sortOrder) 
    return 1; 
    else 
    return -1; 
} 

,并使用

Collection.sort(employeesList );

+0

我必须在EmployeeProgram中设置员工“sortorder”和EmployeeProgram“sortorder”各自的最大值“programCount”。 – OpenSourceDev