java对同时包含字符串和数字进行升序排序怎么写
时间: 2023-11-28 14:50:33 浏览: 29
可以使用Java的内置排序方法`Arrays.sort()`和自定义比较器`Comparator`来对字符串和数字进行升序排序。具体步骤如下:
1. 将字符串和数字存储在同一个数组中。
2. 创建一个自定义的比较器,比较器中先比较字符串,如果字符串相同再比较数字。比较器的代码如下:
```
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int cmp = s1.compareTo(s2);
if (cmp == 0) {
// 如果字符串相同,则比较数字
Integer num1 = Integer.parseInt(s1.replaceAll("[^0-9]", ""));
Integer num2 = Integer.parseInt(s2.replaceAll("[^0-9]", ""));
cmp = num1.compareTo(num2);
}
return cmp;
}
};
```
3. 调用`Arrays.sort()`方法,传入待排序的数组和自定义的比较器。代码如下:
```
String[] array = {"abc1", "abc10", "abc2", "abc11"};
Arrays.sort(array, comparator);
System.out.println(Arrays.toString(array));
```
完整代码如下:
```
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int cmp = s1.compareTo(s2);
if (cmp == 0) {
// 如果字符串相同,则比较数字
Integer num1 = Integer.parseInt(s1.replaceAll("[^0-9]", ""));
Integer num2 = Integer.parseInt(s2.replaceAll("[^0-9]", ""));
cmp = num1.compareTo(num2);
}
return cmp;
}
};
String[] array = {"abc1", "abc10", "abc2", "abc11"};
Arrays.sort(array, comparator);
System.out.println(Arrays.toString(array));
}
}
```
输出结果为`[abc1, abc2, abc10, abc11]`。