java对同时包含相同字符串和数字进行升序排序怎么写
时间: 2023-11-28 21:50:35 浏览: 105
可以使用Java的Comparator接口来自定义排序规则,例如按照字符串的字典序升序排序,如果字符串相同则按照数字升序排序。下面是一个示例代码:
```java
import java.util.*;
public class SortStringsAndNumbers {
public static void main(String[] args) {
String[] arr = {"abc1", "abc3", "abc2", "def1", "def2", "def3", "abc11"};
Arrays.sort(arr, new CustomComparator());
System.out.println(Arrays.toString(arr)); // [abc1, abc2, abc3, abc11, def1, def2, def3]
}
}
class CustomComparator implements Comparator<String> {
public int compare(String s1, String s2) {
String s1Str = s1.replaceAll("\\d+", ""); // 提取字符串部分
String s2Str = s2.replaceAll("\\d+", "");
int strCompare = s1Str.compareTo(s2Str); // 字符串部分按字典序比较
if (strCompare != 0) {
return strCompare;
}
// 如果字符串相同,则按照数字升序排序
Integer s1Num = Integer.parseInt(s1.replaceAll("\\D+", ""));
Integer s2Num = Integer.parseInt(s2.replaceAll("\\D+", ""));
return s1Num.compareTo(s2Num);
}
}
```
这里使用了正则表达式来提取字符串和数字部分,同时使用Integer类将字符串转换为整数进行比较。
阅读全文