2013-08-06 166 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