Treeset 以降序排列元素

新手上路,请多包涵

这是我用于 Java 5.0 的一段代码

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

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

有没有更优化的方法呢?

原文由 Gaurav Saini 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 532
2 个回答

为什么您认为这种方法不会被优化? The reverse order Comparator is simply going to be flipping the sign of the output from the actual Comparator (or output from compareTo on the Comparable 插入的对象),因此我认为它非常快。

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

原文由 Adamski 发布,翻译遵循 CC BY-SA 2.5 许可协议

TreeSet::descendingSet

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

public NavigableSet descendingSet()

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

     The returned set has an ordering equivalent to

Collections.reverseOrder(比较器())。表达式 s.descendingSet().descendingSet() 返回 s 的视图,本质上等同于 s。

     Specified by:
        descendingSet in interface NavigableSet<E>

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

原文由 Brian 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题