java字符串数组排序数字、汉字、字母,排序权重数字>字母>汉字 数字从小到大
时间: 2024-09-09 10:10:13 浏览: 46
在 Java 中,对字符串数组按照特定顺序(数字、字母、汉字,并考虑数字优先于字母再优于汉字,数字从小到大)进行排序,可以采用自定义比较器(Comparator)。首先需要创建一个 `String` 类型的比较器,覆盖 `compare()` 方法来定义比较规则。
```java
import java.util.Arrays;
import java.util.Comparator;
public class CustomSortComparator implements Comparator<String> {
@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 (!s1.matches("\\d+")) {
char[] chars1 = s1.toCharArray();
Arrays.sort(chars1);
s1 = new String(chars1);
}
// 同理处理第二个字符串
if (!s2.matches("\\d+")) {
char[] chars2 = s2.toCharArray();
Arrays.sort(chars2);
s2 = new String(chars2);
}
// 字母和汉字比较,考虑到拼音首字母排序原则
return s1.compareTo(s2);
}
}
// 使用自定义比较器排序数组
public static void main(String[] args) {
String[] arr = {"10", "a", "z", "你好", "5", "9b"};
Arrays.sort(arr, new CustomSortComparator());
System.out.println(Arrays.toString(arr)); // 输出:[5, 9, 10, a, z, 你好]
}
阅读全文