Java 实现 list 集合里面的实体类,根据某一个字段进行排序

2023-03-01 13:08:18 浏览数 (1)

目录

  • 1 需求
  • 2 实现

1 需求

我们查询出数据库的实体类list 集合,需要根据这个实体类里面的某一个字段进行排序,但是这个字段值是中文,而且排序的规则也是不能使用中文首字母进行排序,比如某一个值排序必须是第一个,另外一个必须是 第二个 等之类的

我们就可以使用枚举的形式,规定哪些中文是排序第一个,哪个是第二个,最后遍历list 集合,根据枚举获取到当前数据的排序的级别 ,然后进行排序。

2 实现

我们首先写一个枚举

代码语言:javascript复制
public enum StationEnum {
    /**
     * 级别
     */
    HJJD("长沙", 1),
    ZQHJJD("阿拉斯加",2),
    JDJD("北京", 3);


    StationEnum() {
    }

    private StationEnum(String message,int code ) {
        this.message = message;
        this.code = code;

    }
    private String message;
    private int code;


    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }



    public static int getResultEnum(String message) {
        for (StationEnum type : StationEnum.values()) {
            if (type.getMessage().equals(message)) {
                return type.code;
            }
        }
        return 0;
    }

}

之后查询数据库

代码语言:javascript复制
这个是从数据库查询出来的数据
  List<User> arrayList = new ArrayList<User>();


排序
       if(arrayList!=null && arrayList.size()>0){
            // 排序
            Collections.sort(arrayList , new Comparator<User>() {
                @Override
                public int compare(Usero1, Usero2) {
                    int o1code = 0;
                    int o2code = 1;

                    o1code = StationEnum.getResultEnum(o1.getNodeLevel());
                    o2code = StationEnum.getResultEnum(o2.getNodeLevel());

                    return o1code-o2code;
                }
            });
            objectObjectHashMap.put("list",arrayList);
            return  ResultUtil.success(objectObjectHashMap);
        }

0 人点赞