日期:2014-05-20  浏览次数:20774 次

求教:Collections.reverse()为什么不能将数组元素的顺序颠倒?
我将10个随机数存入int数组a,然后用Arrays.sort(a)排序,想再用Collections.reverse(Arrays.asList(a))将其排成降序,但是没有成功,输出的还是升序,哪位帮忙看看是什么原因,源代码如下:
import java.util.*;
public class Exe1111
{
  public static void main(String[] args)
  {
  int[] a = new int[10];
  Random rd = new Random();
  for(int i=0; i<10; i++)
  {
  a[i] = rd.nextInt(10000);
  System.out.println(a[i]);
  }
  Arrays.sort(a);
  for(int j=0; j<10; j++)
  {
  System.out.println("asc:" + a[j]);
  }
  Collections.reverse(Arrays.asList(a));
  System.out.println(Arrays.toString(a)); //输出的字符串中的数字顺序与使用Arrays.sort(a)后一样,都是升序,为什么啊?
  }
}

------解决方案--------------------
Java code
int[] a = new int[10];
...
Arrays.asList(a);  //关键在这句,asList 把 a 包装成了一个长度为 1 元素类型为 int[] 的 List 了。

//下面代码能验证
List list = Arrays.asList(a);
System.out.println(list.size());  //结果为 1
System.out.println(list.get(0));  //结果为 [I@de6ced

------解决方案--------------------
探讨
我是楼主,请问要怎么样才能既使用Collections.reverse(),又将颠倒顺序后的数输出?