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
从字面上看:
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