可以通过以下方式实现:

  1. 遍历输入的List数据,对于每个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 输入ListUser数据User中有一个字段serial可能有值或没值 根据输入数据自动将serial生成取出其中serial最大值后从此值开始排序生成若无则从1开始排序生成

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

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