1

我已经有了遍历 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
}
4

2 回答 2

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) {
    }
于 2013-01-18T08:22:03.763 回答
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();
}
于 2013-01-18T08:44:05.623 回答