0

学生オブジェクト (名前、ロール番号、住所、年齢) を含むツリーセットがあり、名前の昇順で格納され、名前が同じ場合はロール番号が格納されます。このリストはファイルからのものであり、非常に大きくなる可能性があります。

ここで、名前、年齢、住所、またはロール番号に従って昇順/降順でソートされた、任意の順序でリストを表示する方法を提供する必要があります。私の問題に対する効率的な解決策を探しています。

私が考えているのは、一時的な配列リストを取得して、必要な順序で要素を取得することです。しかし、このためには、すべての基準に対して異なる方法を実装する必要があり、これは非効率に見えます。

ツリーセット内の要素を配列に入れたい方法で取得する方法はありますか?値を出力し、後で一時リストを破棄するだけで済みます。

4

1 に答える 1

1

あなたが言ったように、それを行う唯一の方法は、ツリーを反復処理し、一致するすべての要素をArrayListに引き出すことです。これが完了したら、特定の Comparator に基づいて並べ替えることができます。

自然な順序付けに基づいて要素を抽出したいだけの場合は、subset メソッドを使用できますが、それはツリー内の compareTo メソッドに依存するため、実行したいすべての異なる検索には有効ではありません。

そもそも、なぜ TreeSet を使用しているのですか? 要素には、TreeSet が活用する自然な順序がありますか? そうでない場合は、それらすべてを ArrayList にダンプし、必要に応じて ArrayList を並べ替えませんか?

于 2013-01-21T06:17:57.173 に答える