2012-01-19 15 views
3

リスト内の日付を並べ替えるにはどうすればいいですか?リスト内の日付を並べ替える方法

私はそれが自己のバランスバイナリツリー内の要素を整理し、ソートし、航行のマップであるとして、これは、TreeMapのを使用することによって達成することができることを読みました。それも高価です。

私の質問は - の結果を達成するための最良かつ効率的な方法は何ですか?

+0

あなたはBESTアルゴリズムを選ぶことができます前に、あなたの要件が何であるかを定義する必要があります。あなたは速い実行時間が必要ですか?あなたはメモリのオーバーヘッドが少ないですか?要素の高速取得または挿入が必要ですか? – unholysampler

答えて

6

それは依存します。あなたが "常にソートされた"コンテナを持っていたいなら、TreeSetはあなたの友人です。 TreeMapに別の要素を追加すると、O(log(n)) - (非常に良い、線形よりも速い)です。

一度だけソートする必要がある場合(後で要素を追加しない場合)、ArrayListに入れてsort()メソッドを使用します。それは最適だろう - O(n)は、n個(ログ)

更新:JB Nizetコメントで述べたように

、セット(TreeSetの)は重複を含めることはできません。 List(ArrayList)できます。
パフォーマンスが重要であり、多くの要素があり、重複を許可するソートされた要素を格納する必要がある場合は、TreeSetに格納できますが、カウントを実装する必要があります(たとえば、 element.count++remove()element.count--)。

+0

TreeMapは地図です。それはコレクションではありません。少なくとも代わりにTreeSetを推奨します。しかし、ListとSetは同じ動作をしません。 1つは重複を受け取り、もう1つは重複を受け入れません。これが第一の選択肢でなければなりません。 –

+0

@JBNizet:完全に同意します。私はTreeSet(TreeMapの上に実装されています)を意味しました。私のポストで修正されました。ありがとうございました。 –

関連する問題