这里订购元件是,我已经使用的Java 5.0TreeSet中以降序排列
TreeSet<Integer> treeSetObj = new TreeSet<Integer>(Collections.reverseOrder()) ;
Collections.reverseOrder()的代码段用于以反转的方式,得到比较元素被存储和迭代。
有没有更好的做法呢?
这里订购元件是,我已经使用的Java 5.0TreeSet中以降序排列
TreeSet<Integer> treeSetObj = new TreeSet<Integer>(Collections.reverseOrder()) ;
Collections.reverseOrder()的代码段用于以反转的方式,得到比较元素被存储和迭代。
有没有更好的做法呢?
为什么你认为这种方法不会被优化?相反的顺序Comparator
只是简单地翻转实际的Comparator
输出的符号(或插入Comparable
对象的compareTo
的输出),因此我会想象它非常快。
另一种建议:您可以使用descendingIterator()
方法以降序对它们进行迭代,而不是改变存储元素的顺序。
谢谢。 descendingIterator()方法在6.0中引入,并且在5.0中不存在 – 2009-07-07 08:30:05
TreeSet<Integer> treeSetObj = new TreeSet<Integer>(new Comparator<Integer>()
{
public int compare(Integer i1,Integer i2)
{
return i2.compareTo(i1);
}
});
需要翻转结果。但我想这是只是一个微型优化 ...你真的需要这个吗?
不,这不是必需的。 – 2009-07-07 08:30:56
如果您使用的是Java 6,有一个叫descendingSet().
descendingSet
公共NavigableSet descendingSet()
降序set受此 set支持,所以改变方法集合 反映在下降集合,反之亦然 。如果任一组被修改 ,同时在任一组进行迭代的过程中(除了通过迭代器 自己的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
翻转的顺序```this```和```that```在重写```compareTo```所以物品被插入以相反的顺序。 – opyate 2014-01-24 11:23:48