Gau*_*ini 30 java collections core treeset
这是我用于Java 5.0的一段代码
TreeSet<Integer> treeSetObj = new TreeSet<Integer>( Collections.reverseOrder() ) ;
Run Code Online (Sandbox Code Playgroud)
Collections.reverseOrder()用于获取比较器,以反转元素的存储和迭代方式.
有更优化的方式吗?
Ada*_*ski 41
为什么你认为这种方法不会被优化?相反的顺序Comparator简单地将被翻转从实际输出的符号Comparator(从或输出compareTo上的Comparable物体插入),因此我会想象它是非常快的.
另一种建议:不是更改存储元素的顺序,而是可以使用该descendingIterator()方法按降序迭代它们.
Bri*_*ian 10
如果您使用的是Java 6,则有一个名为descendingSet()的方法.
descendingSet
public NavigableSet descendingSet()
降序集由此集支持,因此对集的更改将反映在降序集中,反之亦然.如果在任一集上的迭代正在进行时修改了任一集(除非通过迭代器自己的删除操作),否则迭代的结果是未定义的.
Run Code Online (Sandbox Code Playgroud)The returned set has an ordering equivalent toCollections.reverseOrder(比较()).表达式s.descendingSet().descendingSet()返回s的视图,该视图基本上等效于s.
Run Code Online (Sandbox Code Playgroud)Specified by: descendingSet in interface NavigableSet<E> Returns: a reverse order view of this set Since: 1.6
TreeSet<Integer> treeSetObj = new TreeSet<Integer>(new Comparator<Integer>()
{
public int compare(Integer i1,Integer i2)
{
return i2.compareTo(i1);
}
});
Run Code Online (Sandbox Code Playgroud)
需要翻转结果.但我想这只是一个微观优化 ......你真的需要这个吗?