本文介绍了如何使用 Java 代码自动生成 List<User>User 对象的 serial 字段,并根据 serial 值进行排序。该方法适用于 serial 字段可能存在或不存在的情况,并能保证生成的 serial 值递增且唯一。

可以通过以下方式实现:

  1. 遍历输入的 List<User> 数据,对于每个 User 对象,判断其 serial 字段是否有值。如果有值,则将其转换成整型并记录下来,如果没有值,则将其标记为未设置(例如赋值为 -1)。

  2. 找到最大的已设置的 serial 值,如果没有已设置的值,则将其赋值为 0。

  3. 对于所有未设置的 serial 值,从最大的已设置的值 + 1 开始递增。

  4. 将所有 User 对象按照 serial 值进行排序,如果有相同的 serial 值,则按照其在输入 List 中的顺序进行排序。

下面是一个示例代码实现:

public static void autoGenerateSerial(List<User> userList) {
    int maxSerial = 0;
    // 遍历所有User对象,找出最大的已设置的serial值
    for (User user : userList) {
        if (user.getSerial() != null) {
            int serial = Integer.parseInt(user.getSerial());
            if (serial > maxSerial) {
                maxSerial = serial;
            }
        }
    }
    // 对于所有未设置的serial值,从最大的已设置的值+1开始递增
    int nextSerial = maxSerial + 1;
    for (User user : userList) {
        if (user.getSerial() == null) {
            user.setSerial(String.valueOf(nextSerial));
            nextSerial++;
        }
    }
    // 将所有User对象按照serial值进行排序
    Collections.sort(userList, new Comparator<User>() {
        @Override
        public int compare(User o1, User o2) {
            int serial1 = o1.getSerial() == null ? -1 : Integer.parseInt(o1.getSerial());
            int serial2 = o2.getSerial() == null ? -1 : Integer.parseInt(o2.getSerial());
            if (serial1 == serial2) {
                return userList.indexOf(o1) - userList.indexOf(o2);
            } else {
                return serial1 - serial2;
            }
        }
    });
}

注意:上述代码中假设 serial 字段的值是一个数字字符串,如果实际情况不是数字字符串,需要对比较和转换进行相应的修改。

Java 自动生成并排序 List<User> 中的 serial 字段

原文地址: https://www.cveoy.top/t/topic/oEa5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录