用于按降序对元素进行排序的树集TreeSet::descendingSet

2022-09-01 09:33:34

这是我用于Java 5.0的代码段

TreeSet<Integer> treeSetObj = new TreeSet<Integer>( Collections.reverseOrder() ) ;

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

有没有更优化的方法?


答案 1

为什么您认为这种方法不会得到优化?相反的顺序只是将输出的符号从实际(或从插入的对象上输出)翻转,因此我认为它非常快。ComparatorComparatorcompareToComparable

另一个建议是:与其更改元素的存储顺序,不如使用该方法按降序循环访问它们。descendingIterator()


答案 2

TreeSet::descendingSet

在Java 6及更高版本中,TreeSet上有一个名为downropingSet()的方法,用于生成NavigableSet接口对象。

public NavigableSet descendingSet()

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

    The returned set has an ordering equivalent to

Collections.reverseOrder(comparator()).表达式 s.descendingSet().descendingSet() 返回本质上等效于 s 的 s 视图。

    Specified by:
        descendingSet in interface NavigableSet<E>

    Returns:
        a reverse order view of this set
    Since:
        1.6