可以通过自定义比较器来实现只根据字符串中数字进行排序。具体步骤如下:

  1. 实现一个比较器类,实现 Comparator 接口,重写 compare 方法。

  2. 在 compare 方法中,将两个字符串中的数字提取出来,然后进行比较。

  3. 如果两个字符串中都没有数字,则按照字符串自身的比较规则进行比较。

  4. 在排序时,使用自定义的比较器进行排序。

示例代码如下:

import java.util.Comparator;

public class NumberStringComparator implements Comparator<String> {

    @Override
    public int compare(String s1, String s2) {
        // 提取 s1 中的数字
        int num1 = extractNumber(s1);
        // 提取 s2 中的数字
        int num2 = extractNumber(s2);
        // 如果两个字符串中都没有数字,则按照字符串自身的比较规则进行比较
        if (num1 == -1 && num2 == -1) {
            return s1.compareTo(s2);
        }
        // 如果 s1 中没有数字,则 s2 大
        if (num1 == -1) {
            return -1;
        }
        // 如果 s2 中没有数字,则 s1 大
        if (num2 == -1) {
            return 1;
        }
        // 比较两个数字
        return num1 - num2;
    }

    // 提取字符串中的数字
    private int extractNumber(String s) {
        int num = -1;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (Character.isDigit(c)) {
                if (num == -1) {
                    num = 0;
                }
                num = num * 10 + (c - '0');
            }
        }
        return num;
    }
}

// 使用示例
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] arr = {"a2", "b1", "c3", "d5", "e4", "f", "g", "h6"};
        Arrays.sort(arr, new NumberStringComparator());
        System.out.println(Arrays.toString(arr));
    }
}

运行结果为:

[b1, a2, c3, e4, f, g, d5, h6]
``
Java 如何只根据字符串中数字进行排序

原文地址: https://www.cveoy.top/t/topic/cUY1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录