我想反转一个 char 数组,为啥在使用 Arrays.sort(arr, Collections.reverseOrder()) 时它会失败? [复制]

Posted

技术标签:

【中文标题】我想反转一个 char 数组,为啥在使用 Arrays.sort(arr, Collections.reverseOrder()) 时它会失败? [复制]【英文标题】:I would like to reverse a char array, why it fails when using Arrays.sort(arr, Collections.reverseOrder())? [duplicate]我想反转一个 char 数组,为什么在使用 Arrays.sort(arr, Collections.reverseOrder()) 时它会失败? [复制] 【发布时间】:2021-12-24 07:40:38 【问题描述】:

如果我反转一个字符串数组,它在使用时可以正常工作 Arrays.sort(arr, Collections.reverseOrder()) 但为什么它不适用于 char 数组?

public static void main(String[] args) 
    String[] temp = new String[] "ab","aa","ac";
    Arrays.sort(temp, Collections.reverseOrder());
            
    char[] arr = new char[]'a','b','c';
    Arrays.sort(arr, Collections.reverseOrder());

【问题讨论】:

【参考方案1】:

你有一个原语数组。 char 是一个原语。 Collections.sort() 处理对象集合。

要解决问题,请这样做...

 Character[] arr = new Character[]'a','b','c';
 Arrays.sort(arr, Collections.reverseOrder());

不要使用原始类型,而是使用它的包装类型,它是一个对象。然后,一切都会正常进行。

【讨论】:

【参考方案2】:

Collections.reverseOrder() 不适用于 java 中的原始类型,例如 char 类型。

您需要对其进行排序,然后使用 for 循环或将字符放入字符串等进行反转。

【讨论】:

以上是关于我想反转一个 char 数组,为啥在使用 Arrays.sort(arr, Collections.reverseOrder()) 时它会失败? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中反转 char 数组会导致错误

如何从 C++ 中的 char 指针初始化 char 数组?

java实现数组元素反转

使用字符数组反转字符串

LC 反转字符串

为啥我不能使用 `section .data:` 和 `section .text:` 在 C 中创建一个长度超过 61 个字符的 char 数组? [复制]