Treeset按降序排列元素

这是我用于Java 5.0的代码段

TreeSet treeSetObj = new TreeSet( Collections.reverseOrder() ) ; 

Collections.reverseOrder()用于获取比较器,以反转元素的存储和迭代方式。

有更优化的方式吗?

为什么你认为这种方法不会被优化? 逆序Comparator器只是翻转实际Comparator输出的符号(或者插入Comparable对象的compareTo输出),因此我认为它非常快。

另一种建议:不是更改存储元素的顺序,而是使用descendingIterator()方法按降序迭代它们。

如果您使用的是Java 6,则会有一个名为descendingSet()的方法。

descendingSet

public NavigableSet descendingSet()

降序集由此集支持,因此对集的更改将反映在降序集中,反之亦然。 如果在任一集上的迭代正在进行时修改了任一集(除非通过迭代器自己的删除操作),迭代的结果是未定义的。

  The returned set has an ordering equivalent to 

Collections.reverseOrder(比较())。 表达式s.descendingSet()。descendingSet()返回s的视图,该视图基本上等效于s。

  Specified by: descendingSet in interface NavigableSet Returns: a reverse order view of this set Since: 1.6 
 TreeSet treeSetObj = new TreeSet(new Comparator() { public int compare(Integer i1,Integer i2) { return i2.compareTo(i1); } }); 

需要翻转结果。 但我想这只是一个微观优化 ……你真的需要这个吗?