下面是我为Java5.0使用的代码
TreeSet<Integer> treeSetObj = new TreeSet<Integer>( Collections.reverseOrder() ) ;Collections.reverseOrder()用于获得一个比较器,以逆转存储和迭代元素的方式。
有没有一种更优化的方法来做这件事?
发布于 2009-07-07 08:14:01
为什么你认为这种方法不会被优化呢?相反的顺序Comparator将简单地翻转来自实际Comparator的输出符号(或插入的Comparable对象上的compareTo输出),因此我可以想象它非常快。
另一个建议是:与其更改存储元素的顺序,不如使用descendingIterator()方法按降序遍历元素。
发布于 2010-05-18 21:54:13
TreeSet::descendingSet
在Java6和更高版本中,TreeSet上有一个名为descendingSet()的方法,用于生成NavigableSet接口对象。
public NavigableSet descendingSet()
降序集由此集支持,因此对集合的更改反映在降序集中,反之亦然。如果在任一集合上的迭代正在进行中(除非通过迭代器自己的移除操作),则迭代的结果是未定义的。
返回的集合的排序等价于
比较器(Collections.reverseOrder)。表达式s.descendingSet().descendingSet()返回一个与s本质等价的视图。
接口中由: descendingSet指定的NavigableSet返回:自: 1.6以来的该集合的反向顺序视图
发布于 2009-07-07 08:16:58
TreeSet<Integer> treeSetObj = new TreeSet<Integer>(new Comparator<Integer>()
{
public int compare(Integer i1,Integer i2)
{
return i2.compareTo(i1);
}
});有必要翻转结果。但我想这是--.你真的需要这个吗?
https://stackoverflow.com/questions/1090969
复制相似问题