在java中,将TreeSet从最后一个节点横向到第一个节点的最佳方法是什么?



我已经有了一个遍历TreeSet的解决方案。我的问题与性能有关,我实现的方式是最优的吗?请参阅下面的代码示例。

public static void main(String[] args)
{ 
  TreeSet ts = new TreeSet();
  ts.add("F");
  ts.add("B");
  ts.add("H");
  ts.add("Z");
  while (!ts.isEmpty())
  {
    String last = (String)ts.last();
    System.out.println(last);
    ts.remove(last);
  }
  // OUTPUT: Z H F B
}

看起来很简单

    TreeSet ts = new TreeSet();
    Iterator i = ts.descendingIterator();
    while(i.hasNext()) {
        Object next = i.next();
    }

    for(Object e : ts.descendingSet()) {
    }

对于Java 1.6以下版本,可以尝试

    TreeSet tmp = new TreeSet(Collections.reverseOrder());
    tmp.addAll(ts);
    for(Object e : tmp) {
    }

与JDK 5兼容的方法:创建一个新的新集合,并将比较器颠倒。

TreeSet<String> trev = new TreeSet<String>(Collections.reverseOrder());
trev.addAll(ts);
//now you can just iterate which the usual forward iterator.
Iterator i = trev.iterator();
while(i.hasNext()) {
    String next = i.next();
}

相关内容

最新更新