List复杂对象排序

简单对象排序

 Collections.sort(nums);  //num为简单数组单个元素的list等

复杂对象排序

1.实体类

public class Salesman implements Comparable<Salesman>{//实现该接口

    private int id;// same with userId;
    private String name;// same with realname;
    private int businessLevel;
    private int status;
    @Override
    public int compareTo(Salesman salesman) {
        int i = this.getStatus()-salesman.getStatus();
        return i;//i>=0则该元素排在前面
    }
    @Override
    public String toString() {
        return "Salesman{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", businessLevel=" + businessLevel +
                ", status=" + status +
                '}';
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getBusinessLevel() {
        return businessLevel;
    }

    public void setBusinessLevel(int businessLevel) {
        this.businessLevel = businessLevel;
    }


}
2.实现方法

List<Salesman> salesmen = new ArrayList<>();//要被排序的集合
for (User user : users) {//赋值
    if (StringUtils.isEmpty(nameLike) || user.getRealname().contains(nameLike)) {
        int businessLevel = getBusinessLevel(user);
        Salesman salesman = new Salesman();
        salesman.setId(user.getId());
        salesman.setName(user.getRealname());
        salesman.setBusinessLevel(businessLevel);
        salesman.setStatus(user.getStatus());
        salesmen.add(salesman);
    }
}
Collections.sort(salesmen);//按statue排序
Collections.reverse(salesmen);//这里要让statue小的在后面,所以需要逆序一下

猜你喜欢

转载自blog.csdn.net/qq_37205911/article/details/80814159