为什么 array.sort 不能通过这样的数组工作?

Enc*_*era 3 java arrays

我大约 2 周前才开始编程,所以请不要太严格:)

我试图解决一个编程练习来打印数组的 3 个最大元素,但是 .sort 方法

报告错误,我不知道为什么。似乎我以错误的方式声明了我的数组,但我无法发现错误。

public static void main(String[] args) {
    int [] elements = {1, 4, 17, 7, 25, 3, 100};
    int k = 3;
    System.out.println("Original Array: ");
    System.out.println(Arrays.toString(elements));
    System.out.println(k +" largest elements of the said array are:");
    Arrays.sort(elements, Collections.reverseOrder());         
   for (int i = 0; i < k; i++) 
      System.out.print(elements[i] + " ");
}
Run Code Online (Sandbox Code Playgroud)

}

Jas*_*son 5

因为整数是未装箱的并且不是对象。它们需要装箱,即整数。

未装箱

int [] elements = {1, 4, 17, 7, 25, 3, 100};
Run Code Online (Sandbox Code Playgroud)

盒装

Integer [] elements = {1, 4, 17, 7, 25, 3, 100};
Run Code Online (Sandbox Code Playgroud)

使用 Java 8 流

       int[] elements = { 1, 4, 17, 7, 25, 3, 100 };

       int[] sortedUnboxed = IntStream.of(elements)
                .boxed()
                .sorted(Comparator.reverseOrder())
                .mapToInt(value -> value)
                .toArray();

        Integer[] sortedBoxed = IntStream.of(elements)
                .boxed()
                .sorted(Comparator.reverseOrder())
                .toArray(Integer[]::new);
Run Code Online (Sandbox Code Playgroud)