使用比较器 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());
我知道如何使用比较器 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());