java对同时包含数字和文字的字符串排序
时间: 2024-05-16 15:16:42 浏览: 90
可以使用Java中的Comparator接口来实现根据字符串中的数字进行排序。下面是一个示例代码:
```java
import java.util.*;
public class StringSortDemo {
public static void main(String[] args) {
List<String> list = Arrays.asList("a1", "a10", "a2", "b1", "b10", "b2");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String[] arr1 = o1.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
String[] arr2 = o2.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
String s1 = arr1[0];
String s2 = arr2[0];
int result = s1.compareTo(s2);
if (result != 0) {
return result;
}
if (arr1.length == 1 || arr2.length == 1) {
return arr1.length - arr2.length;
}
int i1 = Integer.parseInt(arr1[1]);
int i2 = Integer.parseInt(arr2[1]);
return i1 - i2;
}
});
System.out.println(list);
}
}
```
这段代码中,我们通过正则表达式分割字符串,将字符串分为两部分:字母和数字。然后按照字母部分进行排序,如果字母部分相同,则比较数字部分。注意,字符串中的数字部分需要转换为整数进行比较。
阅读全文