如何使用java以相反的顺序对数组进行排序?

时间:2011-04-07 16:43:54

标签: java

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”类是在测试类的main方法中定义的。 当我尝试反转数组时,为什么它会给我一个编译错误?

6 个答案:

答案 0 :(得分: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());                            
    }
}

答案 1 :(得分:2)

我得到的错误(假设原帖有错字)是Collections.reverseOrder()返回Comparator<Object>

Arrays.sort(带隔离区)仅为Object的后代定义,因此不适用于基本类型。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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