首页 > 解决方案 > 按字典顺序排序字符串数组,然后按数字排序(因为字符串包含数字)

问题描述

我有一个字符串,其中包含数字。我想对它进行排序,就像输出应该按字典顺序排序,然后最后根据数字排序。我已经通过以下方式完成了此操作,其复杂性非常大。有没有其他方法可以对此进行排序? 不想直接使用 Arrays.sort

预期输出 - [blue1, blue3, red3, red6]

 public class SortStrings {

public static void main(String[] args) {

    String a[] = { "blue3", "red6", "red3","blue1" };
    String tmp;
    for (int i = 0; i < a.length; i++) {
        for (int j = i; j < a.length - i-1; j++) {
            if (a[j].compareTo(a[j + 1]) > 0) {
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
    List<String> strings = Arrays.asList(a);
      Collections.sort(strings, new Comparator<String>() {
            public int compare(String o1, String o2) {
                return extractInt(o1) - extractInt(o2);
            }

            int extractInt(String s) {
                String num = s.replaceAll("\\D", "");
                // return 0 if no digits found
                return num.isEmpty() ? 0 : Integer.parseInt(num);
            }
        });
    System.out.println(Arrays.toString(a));
}

}

标签: javastring

解决方案


推荐阅读