【问题标题】:How to sort LinkedList<Employee> of Employee Object on the basis of 'category' property of Employee Class [duplicate]如何根据员工类的“类别”属性对员工对象的 LinkedList<Employee> 进行排序[重复]
【发布时间】:2018-04-04 19:36:56
【问题描述】:

我有包含 Employee 类对象的 LinkedList 对象。

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”类别的对象也应该以这种方式出现在其他类别中。

【问题讨论】:

  • 设为comparable 并使用Collections.sort()
  • 我的要求是:所有具有“SC”类别的对象都应该在 LinkedList 中排在第一位,之后具有“NT”类别的对象也应该以这种方式出现在其他类别中..

标签: java list sorting collections linked-list


【解决方案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();
   }
});

【讨论】:

    猜你喜欢
    • 2018-06-02
    • 2023-03-15
    • 1970-01-01
    • 2015-02-17
    • 2017-04-06
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多