import java.util.TreeSet;
public class TreeSetDescending {
public static void main(String[] args)
{
// Declare a treeset
TreeSet<Object> ints = new TreeSet<Object>();
ints.add(2);
ints.add(20);
ints.add(10);
ints.add(5);
ints.add(7);
ints.add(3);
// Initialize treeset with predefined set in reverse order
// using descendingSet()
TreeSet<Object> intsReverse = (TreeSet<Object>)ints.descendingSet();
// Print the set
System.out.println("Without descendingSet(): " + ints);
System.out.println("With descendingSet(): " + intsReverse);
}
}
5条答案
按热度按时间i7uaboj41#
为什么你认为这种方法不会被优化呢?反向顺序
Comparator
只是将实际Comparator
的输出(或插入Comparable
对象上的compareTo
的输出)的符号翻转,因此我认为它非常快。另一个建议是:您可以使用
descendingIterator()
方法以降序迭代元素,而不是更改存储元素的顺序。iecba09b2#
第一个月
在Java 6和更高版本中,
TreeSet
上有一个名为descendingSet()
的方法,它生成NavigableSet
接口对象。公共可导航集descendingSet()
降序集由该集支持,因此对该集的更改将反映在降序集中,反之亦然。如果在对任一集进行迭代时修改了任一集(除非通过迭代器自己的移除操作),则迭代的结果是未定义的。
表达式s. descendingSet().descendingSet()返回s的一个视图,该视图本质上等同于s。
jk9hmnmh3#
需要翻转结果。但我猜这只是一个micro-optimization...你真的需要这个吗?
ubby3x7f4#
使用descendingSet方法可以反转类中的现有treeSet
8ftvxx2r5#
反转
compare
您可以颠倒
Comparator
的compare
方法中两个参数的顺序。