如何解决使用比较器类创建数组
我知道如何使用比较器类创建优先队列。在这里,我创建了一个比较器类来比较 2 个字符。我的问题是我应该如何使用比较方法创建一个字符数组?我尝试了以下操作: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());
相反,您可以创建数组,然后调用类 Arrays 的帮助方法(静态方法)对其进行排序
char[] helper = ...your array
Arrays.sort(helper,new StringNumComparator());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。