使用比较器 class 创建数组

creating an array with the comparator class

我知道如何使用比较器 class 创建优先级队列。这里我创建了一个比较器 class 来比较 2 个字符。我的问题是我应该如何使用比较方法创建一个 char 数组?我尝试了以下操作:char[] helper = new char[](new StringNumComparator());.

 public String Practice(String input) {
        class StringNumComparator implements Comparator<Character> {
            @Override
            public int compare(Character a, Character b) {
                if (Character.isAlphabetic(a) && Character.isAlphabetic(b)) {
                    return (int) a <= (int) b ? -1 : 1;
                } else if (Character.isDigit(a) && Character.isDigit(b)) {
                    return Character.getNumericValue(a) <= Character.getNumericValue(b) ? -1 : 1;
                }
                return Character.isAlphabetic(a) ? -1 : 1;
            }
        }

        char[] helper = new char[](new StringNumComparator());
        return new String(helper);
}

在 Java 中没有“始终排序的数组”这样的概念,就像您正在尝试创建的那样。您可以使用客户比较器对数组进行显式排序:

Arrays.sort(myArray, new StringNumComparator());

但请注意,这仅适用于对象数组(如 Character),不适用于基元数组(如 char)。

这在 java 中无效:

char[] helper = new char[](new StringNumComparator());

相反,您可以创建数组,然后调用 class 数组

的帮助方法(静态方法)对其进行排序
char[] helper = ...your array
Arrays.sort(helper, new StringNumComparator());