这是我用于 Java 5.0 的一段代码
TreeSet<Integer> treeSetObj = new TreeSet<Integer>( Collections.reverseOrder() ) ;
Collections.reverseOrder()
用于获取比较器以反转元素的存储和迭代方式。
有没有更优化的方法呢?
原文由 Gaurav Saini 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是我用于 Java 5.0 的一段代码
TreeSet<Integer> treeSetObj = new TreeSet<Integer>( Collections.reverseOrder() ) ;
Collections.reverseOrder()
用于获取比较器以反转元素的存储和迭代方式。
有没有更优化的方法呢?
原文由 Gaurav Saini 发布,翻译遵循 CC BY-SA 4.0 许可协议
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 许可协议
4 回答1.2k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答705 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.6k 阅读
2 回答1.3k 阅读
为什么您认为这种方法不会被优化? The reverse order
Comparator
is simply going to be flipping the sign of the output from the actualComparator
(or output fromcompareTo
on theComparable
插入的对象),因此我认为它非常快。另一个建议:与其更改存储元素的顺序,不如使用
descendingIterator()
方法按降序迭代它们。