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); } });
需要翻转结果。 但我想这只是一个微观优化 ……你真的需要这个吗?