如何根据Employee Class的'category'属性对Employee Object的LinkedList <employee>进行排序

时间:2017-10-24 05:59:19

标签: java list sorting collections linked-list

我有LinkedList对象,其中包含Employee类对象。

public class Employee{
    private int empid;
    private String name;
    private String category;

    //Constructors

    //Getters and Setters

}

员工类别可能是'SC','NT','OBC','OPEN'。 我想以这样的方式重新排列这个LinkedList:具有'SC'类别的Employee对象首先是具有'NT'类别然后'OBC'然后'OPEN'的对象。

我的要求是:所有具有'SC'类别的对象应该首先出现在LinkedList中,之后具有类别'NT'的对象也应该以其他类别出现。

1 个答案:

答案 0 :(得分:1)

由于它看起来像一些值,您可以为Category创建枚举。定义在那里排序的顺序。并使用适当的比较器对集合进行排序,如下所示。

public enum Category {
    SC(0),
    NT(1),
    OBC(2),
    OPEN(3);

    private final int rank;

    private Category(int rank) {
        this.rank = rank;
    }

    /**
     * @return the rank
     */
    public int getRank() {
        return rank;
    }
}

Collections.sort(employeeList, new Comparator<Employee>() {
   @Override
   public int compare(Employee o1, Employee o2) {
     return o1.getCategory().getRank() - o2.getCategory().getRank();
   }
});