要实现这个功能,你可以使用Java中的Collections.sort()方法,结合自定义的比较器(Comparator)。这个比较器首先会比较字符串中的数字部分,如果数字相同,则会比较字母部分。以下是一个示例代码:
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortStringByNumberAndLetter {
public static void main(String[] args) {
List<String> strings = Arrays.asList("10a", "2b", "10c", "1d");
Collections.sort(strings, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
// 提取数字部分并转换为整数
int num1 = Integer.parseInt(s1.replaceAll("\\D", ""));
int num2 = Integer.parseInt(s2.replaceAll("\\D", ""));
// 首先比较数字部分
if (num1 != num2) {
return num1 - num2;