2013-08-06 167 views
25

我有列表list1直接順序。​​ 如何更改訂單。而且我不知道如何從擴展類重寫方法,請寫下例子或說清楚。謝謝。按相反順序排序列表

+0

你能用例子來詳細說明你的問題嗎? –

+2

「變更單」對你來說意味着什麼?根據特定的規則組反向列表或應用全新的訂單? – f1sh

+0

您希望列表按降序排列。對? – JHS

回答

64

使用此:

Collections.reverse(list); 
+1

這是按降序排列還是隻是顛倒元素的插入順序? – JHS

+1

它只是顛倒了訂單元素。 –

+0

+1爲了簡單,可讀性強。 – Xynariz

27

Collections類中有一個方法reverseOrder,它返回Comparator

您可以使用它像Collections.sort(list, Collections.reverseOrder());

+0

我會考慮你的答案,因爲只有在恢復之後纔有必要安排。您的方法能夠在單個框架中執行兩個操作。我不知道其他人,但謝謝。 – Loa

7

訂購,番石榴的訂購已有a reverse method

List<String> list = Ordering.natural().reverse().sortedCopy(asu2); 
1

Collections.reverse(List)反轉給定的列表。您也可以使用番石榴的Lists.reverse(List)創建一個視圖以給定列表作爲後備順序,而不需要複製它或修改原始列表。

如果您只是想創建一個按照自然順序排序的列表,請參閱@ assylias關於Ordering.natural().reverse()的回答。

10

你可以通過在你的回報中加入「 - 」或負號來反轉任何類型。

Collections.sort(listed, new Comparator<Object>() { 

    @Override 
    public int compare(Object o1, Object o2) { 

     return -o1.getLeft().compareTo(o2.getLeft()); 

    } 
}); 
+0

並讓我們希望'compareTo'永遠不會返回最小整數,因爲'-Integer.MIN_VALUE'仍然是'Integer.MIN_VALUE'。最安全的方法是將o1與o2交換,如'return o2.getLeft()。compareTo(o1.getLeft())' – Pshemo