Java数组降序?

有什么简单的方法来降序sorting数组,如何在数组类升序sorting?

或者我必须停止懒惰,自己做这个:[

你可以用这个

sort(T[] a, Comparator<? super T> c) Arrays.sort(a, Collections.reverseOrder()); 

你可以使用这个:

  Arrays.sort(data, Collections.reverseOrder()); 

Collections.reverseOrder()使用逆自然顺序返回Comparator器。 您可以使用Collections.reverseOrder(myComparator)获得您自己的比较器的反转版本。

一个列表

 Collections.sort(list ,Collections.reverseOrder()); 

为一个数组

 Arrays.sort(array, Collections.reverseOrder()); 

没有明确的比较:

 Collections.sort(list, Collections.reverseOrder()); 

与明确的比较:

 Collections.sort(list, Collections.reverseOrder(new Comparator())); 

一个替代可能是(数字!!!)

  1. 将数组乘以-1
  2. 分类
  3. 再乘以-1

从字面上看:

 array = -Arrays.sort(-array) 

Java 8:

 Arrays.sort(list, comparator.reversed()); 

更新: reversed()反转指定的比较器。 通常情况下,比较器的顺序是升序,所以这个顺序是下降的。

对于包含基元元素的数组,如果有org.apache.commons.lang(3)处理简单的方法来反转数组(sorting后)是使用:

 ArrayUtils.reverse(array); 

首先,您需要使用以下命令对数组sorting:

  Collections.sort(Myarray); 

然后,您需要使用以下命令从上升到下降的顺序颠倒:

  Collections.reverse(Myarray); 

我不知道你的用例是什么,但是除了其他的答案之外,另外一个(懒惰的)选项仍然按照你指示的升序sorting,而是按相反的顺序迭代。

另一个解决scheme是,如果您正在使用Comparable接口,则可以切换您在compareTo(Object bCompared)中指定的输出值。

例如 :

 public int compareTo(freq arg0) { int ret=0; if(this.magnitude>arg0.magnitude) ret= 1; else if (this.magnitude==arg0.magnitude) ret= 0; else if (this.magnitude<arg0.magnitude) ret= -1; return ret; } 

在我的程序中, 幅度是数据types为double的属性。 这是sorting我的定义类频率倒序的大小。 所以为了纠正这个问题,你需要切换<>返回的值。 这给你以下几点:

 public int compareTo(freq arg0) { int ret=0; if(this.magnitude>arg0.magnitude) ret= -1; else if (this.magnitude==arg0.magnitude) ret= 0; else if (this.magnitude<arg0.magnitude) ret= 1; return ret; } 

为了使用这个compareTo,我们简单地调用Arrays.sort(mFreq) ,它将给你sorting的数组freq [] mFreq

这个解决scheme的美(在我看来)是它可以用来对用户定义的类进行sorting,甚至比按特定属性sorting更多。 如果一个Comparable接口的实现听起来令人生畏,我鼓励你不要这样想,实际上并不是这样。 这个链接就如何实现比较容易的事情对我来说更容易。 希望人们能够利用这个解决scheme,并且你的喜悦甚至可以和我的相媲美

 array.sort(function(a, b) {return b - a;}); //descending 

要么

 array.sort(function(a, b) {return a - b;}); //ascending