java中List<String>排序 数字、汉字、字母,排序权重数字>字母>汉字 数字从小到大
时间: 2024-09-09 15:10:20 浏览: 46
Java 新版POI 读取excel文件信息返回List<List<String>>对象,包含文件内公式处理
在Java中,如果你想按照你提到的规则对`List<String>`中的元素进行排序,即数字优先于字母,然后是字母(区分大小写),最后是汉字,你可以自定义一个Comparator。首先,你需要定义一个比较器,它会考虑每个字符串的字符类型,并按照指定顺序进行比较。以下是一个简单的例子:
```java
import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class CustomSortComparator implements Comparator<String> {
private static final Collator collator = Collator.getInstance();
@Override
public int compare(String s1, String s2) {
// 检查是否都是数字
if (s1.matches("\\d+") && s2.matches("\\d+")) {
return Integer.compare(Integer.parseInt(s1), Integer.parseInt(s2));
}
// 如果不是数字,再检查是否都是字母
if (Character.isLetter(s1.charAt(0)) && Character.isLetter(s2.charAt(0))) {
return collator.compare(s1.toLowerCase(), s2.toLowerCase());
}
// 若都不是数字和字母,则假设是汉字或者其他情况
// 在这里,汉字的排序依赖于Collator提供的自然排序,可能会根据语言环境有所不同
return collator.compare(s1, s2);
}
}
// 使用自定义排序器对List进行排序
List<String> list = Arrays.asList("123", "abc", "def", "你好", "456");
list.sort(new CustomSortComparator());
阅读全文