如何使用Java将数组按照相反的顺序排序?

5
package javaLearning;
import java.util.Arrays;
import java.util.Collections;

    public class myarray {

         public static void name() {
         String hello;
         hello = "hello, world";
         int hello_len = hello.length();
         char[] hello_array = new char[hello_len];
         hello.getChars(0, hello_len, hello_array, 0);
         Arrays.sort(hello_array, Collections.reverseOrder());
}

"myarray"类在测试类的主方法中定义。为什么当我尝试反转数组时会出现编译错误?


2
haa是什么?请贴上你的真实代码。 - Oliver Charlesworth
线程 "main" 中的异常 java.lang.RuntimeException:无法编译的源代码 - Aaron
由于你显然正在学习Java,你应该知道官方指南更喜欢使用全小写的包名。建议使用 javalearning 而不是 javaLearning - SyntaxT3rr0r
6个回答

6

Collections.reverseOrder() 返回一个 Comparator<Object>。而使用比较器的 Arrays.sort 不适用于基本类型。

这个应该可以工作。

import java.util.Arrays;
import java.util.Collections;

public class MyArray {

    public static void name() {            
        String hello = "hello, world";
        char[] hello_array = hello.toCharArray();
        // copy to wrapper array
        Character[] hello_array1 = new Character[hello_array.length];
        for (int i = 0; i < hello_array.length; i++) {
           hello_array1[i] = hello_array[i];
        }
        // sort the wrapper array instead of primitives
        Arrays.sort(hello_array1, Collections.reverseOrder());                            
    }
}

2
我得到的错误信息(假设原帖有一些错别字)是Collections.reverseOrder()返回一个Comparator<Object>Arrays.sort(使用比较器)仅针对Object的后代进行定义,因此无法用于基本类型。

0

您忘记声明 haa = hello.getChars(0, hello_len, hello_array, 0);

,这段代码与编程有关。


0
使用Arrays.sort以升序排序,然后反转数组元素(可以通过简单的循环内联完成)。

0

首先,代码没有遵循JAVA语言的标准。 类名应该始终以大写字母开头,Arrayssort()不应该将原始值列表作为参数。将'char'更改为'Character',然后使用Arrays.sort方法。


-1

在您展示的代码中,haa未定义。这是一个编译错误。


好的,我已经修复了代码中的拼写错误,但它仍然出现错误? - Aaron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接