降順に要素を注文するTreeSetの私は、Java 5.0のために使用したコードのピースここ順序
TreeSet<Integer> treeSetObj = new TreeSet<Integer>(Collections.reverseOrder()) ;
をCollections.reverseOrder()の方法逆にするためにコンパレータを得るために使用され要素が格納され、反復されます。
もっと最適化された方法がありますか?
降順に要素を注文するTreeSetの私は、Java 5.0のために使用したコードのピースここ順序
TreeSet<Integer> treeSetObj = new TreeSet<Integer>(Collections.reverseOrder()) ;
をCollections.reverseOrder()の方法逆にするためにコンパレータを得るために使用され要素が格納され、反復されます。
もっと最適化された方法がありますか?
なぜこのアプローチが最適化されないと思いますか?逆順Comparator
は、単に実際のComparator
(またはComparable
オブジェクトが挿入されているcompareTo
からの出力)の出力の符号を反転しているため、非常に高速です。
代わりの提案:要素を格納する順序を変更する代わりに、descendingIterator()
メソッドを使用して降順で反復処理することができます。
ありがとうございます。 descendingIterator()メソッドが6.0で導入され、5. –
TreeSet<Integer> treeSetObj = new TreeSet<Integer>(new Comparator<Integer>()
{
public int compare(Integer i1,Integer i2)
{
return i2.compareTo(i1);
}
});
結果を反転する必要があります。しかし、私はこれがちょうどマイクロ最適化 ...だと思いますこれは本当に必要ですか?
には存在しませんでした。これは必須ではありません。 –
は、Java 6を使用している場合は、descendingSet().
descendingSet
公共のNavigableSet descendingSetを()
降順セットはに変更して、この セットによってバックアップと呼ばれる方法がありますセットは が下降セットに反映され、 の逆もあります。いずれかのセットが変更された場合、いずれかのセットの反復が進行中の ( イテレータの独自の削除操作を除いて)である場合、 の結果は となります。
The returned set has an ordering equivalent to
Collections.reverseOrder(comparator)。 式 s.descendingSet()。descendingSet() は、本物の のビューを返す。
Specified by: descendingSet in interface NavigableSet<E> Returns: a reverse order view of this set Since: 1.6
項目は逆の順序で挿入されるようにオーバーライド '' compareTo'''で '' this'''と '' that'''の順序を反転。 – opyate