在java中从最后一个节点遍历TreeSet的最佳方法是什么?

时间:2013-01-18 08:18:13

标签: java performance 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
}

2 个答案:

答案 0 :(得分:3)

似乎很简单

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

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

对于1.6以下的Java,您可以尝试

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

答案 1 :(得分:0)

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();
}