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 に答える