Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按相反顺序排序数组-不反转_Java_Arrays_Sorting_Reverse - Fatal编程技术网

Java 按相反顺序排序数组-不反转

Java 按相反顺序排序数组-不反转,java,arrays,sorting,reverse,Java,Arrays,Sorting,Reverse,我试图将整数数组从最高到最低排序 int[] array = {2, 6, 4, 1}; Arrays.sort(array); Collections.reverse(Arrays.asList(array)); for (int num : array) { System.out.println(num); } 这将按升序打印数组-1、2、4、6。为什么它没有被反转,或者为什么数组没有以反转状态永久存储?您显示的是数组排序的结果,而不是列表反转的结果。您需要将排序后的列表存

我试图将整数数组从最高到最低排序

int[] array = {2, 6, 4, 1};    
Arrays.sort(array);
Collections.reverse(Arrays.asList(array));
for (int num : array) {
    System.out.println(num);
}

这将按升序打印数组-
1、2、4、6
。为什么它没有被反转,或者为什么数组没有以反转状态永久存储?

您显示的是数组排序的结果,而不是列表反转的结果。您需要将排序后的列表存储在一个临时变量中,将其反转,然后调用toArray以获得所需的行为

按相反顺序排序更简单的方法是:

Arrays.sort(array, (o1,o2)-> Integer.compare(o2,o1));

您显示的是数组排序的结果,而不是列表反转的结果。您需要将排序后的列表存储在一个临时变量中,将其反转,然后调用toArray以获得所需的行为

按相反顺序排序更简单的方法是:

Arrays.sort(array, (o1,o2)-> Integer.compare(o2,o1));
最“简单”的解决方案是使用
集合
类提供的
反向补偿器
。这将自动按降序对数组进行排序

public static void main(String[] args) {
    // Use the Wrapper class, otherwise you can´t call Arrays.sort with a comperator.
    Integer[] array = {2, 6, 4, 1};
    Arrays.sort(array, Collections.reverseOrder());
    for (int num : array) {
        System.out.println(num);
    }
}
您的解决方案不起作用的原因。
您可以临时创建一个包含
数组的列表。asList(array)
,您可以反向创建,以后不再引用该列表。这不会改变
数组
变量的顺序。

最“简单”的解决方案是使用
集合
类提供的
反向计算器
。这将自动按降序对数组进行排序

public static void main(String[] args) {
    // Use the Wrapper class, otherwise you can´t call Arrays.sort with a comperator.
    Integer[] array = {2, 6, 4, 1};
    Arrays.sort(array, Collections.reverseOrder());
    for (int num : array) {
        System.out.println(num);
    }
}
您的解决方案不起作用的原因。

您可以临时创建一个包含
数组的列表。asList(array)
,您可以反向创建,以后不再引用该列表。这不会更改
数组
变量的顺序。

代码中有几个问题:
数组。由于列表
不会创建新的
列表
,它实际上是一个
列表
。但是,即使它如您所期望的那样工作,返回的列表只是一个临时对象,您仍然在打印数组

不幸的是,正确的解决方案并不十分优雅:

int[] array = {2, 6, 4, 1};    
Arrays.sort(array);
List<Integer> asList = new ArrayList<Integer>(); 
for(int i : array) {
    asList.add(i);
}
Collections.reverse(asList);
for (int num : asList) {
    System.out.println(num);
}
int[]数组={2,6,4,1};
数组。排序(数组);
List asList=new ArrayList();
for(int i:array){
增加(i);
}
收款。反向(asList);
for(int num:asList){
系统输出打印项数(num);
}

您的代码中有几个问题:
数组。asList
不会创建新的
列表
,它实际上是一个
列表
。但是,即使它如您所期望的那样工作,返回的列表只是一个临时对象,您仍然在打印数组

不幸的是,正确的解决方案并不十分优雅:

int[] array = {2, 6, 4, 1};    
Arrays.sort(array);
List<Integer> asList = new ArrayList<Integer>(); 
for(int i : array) {
    asList.add(i);
}
Collections.reverse(asList);
for (int num : asList) {
    System.out.println(num);
}
int[]数组={2,6,4,1};
数组。排序(数组);
List asList=new ArrayList();
for(int i:array){
增加(i);
}
收款。反向(asList);
for(int num:asList){
系统输出打印项数(num);
}

我明白。我可以存储此列表,然后将其转换回数组吗?或者有没有更简单的方法对数组进行反向排序?我明白。我可以存储此列表,然后将其转换回数组吗?或者有没有更简单的方法对数组进行反向排序?