java 输入ListUser数据User中有一个字段serial可能有值或没值 根据输入数据自动将serial生成取出其中serial最大值后从此值开始排序生成若无则从1开始排序生成
可以通过以下方式实现:
-
遍历输入的List
数据,对于每个User对象,判断其serial字段是否有值。如果有值,则将其转换成整型并记录下来,如果没有值,则将其标记为未设置(例如赋值为-1)。 -
找到最大的已设置的serial值,如果没有已设置的值,则将其赋值为0。
-
对于所有未设置的serial值,从最大的已设置的值+1开始递增。
-
将所有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字段的值是一个数字字符串,如果实际情况不是数字字符串,需要对比较和转换进行相应的修改
原文地址: https://www.cveoy.top/t/topic/hbex 著作权归作者所有。请勿转载和采集!