java 对查询列表接口的name字段排序 , name是数字开头的靠前,文字靠后,文字再根据首字母排序
时间: 2024-12-16 18:28:18 浏览: 1
获取手机联系人并按字母排序,且可根据字母右侧A~Z检索.zip
在Java中对查询结果的列表(通常是一个List<YourObject>,其中YourObject有一个名为"name"的字段可能是字符串或数字加字符串形式)进行排序,可以按照您的需求编写自定义Comparator。这里是一种可能的实现方式:
```java
import java.text.DecimalFormat;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CustomSort {
public static void sortListByName(List<YourObject> list) {
// 首先将所有名字转换为DecimalFormat对象,便于比较数字开头部分
DecimalFormat df = new DecimalFormat("0");
list.sort(Comparator.comparingInt(obj -> {
String name = obj.getName();
if (name.startsWith("#")) { // 如果数字开头
return Integer.parseInt(df.format(name.substring(1)));
} else { // 文字部分
return name.toLowerCase().compareTo(name);
}
}));
}
}
class YourObject {
private String name;
// getters and setters...
@Override
public String toString() {
return name; // 用于打印展示
}
}
```
这个`sortListByName`方法会首先检查每个对象的"name"是否以数字开头。如果是,它会提取数字部分并将其转换为整数进行排序;如果不是,则直接按名称的字母顺序进行排序。注意,这里我们假设数字前面有一个井号"#"作为标记。
阅读全文