この質問は、StackOverflowに適していると思われるほど具体的であることを願います。私はFAQをチェックしました。これはプログラミングに特有で関連しているため、これが適格であると思います。コレクションタイプ間で変換するのが悪いフォームと考えられますか?
私はJavaで複雑なデータマイニングアルゴリズム(FP-growth)を実装しています。アルゴリズムの初期段階では、大きなデータベースをスキャンし、見つかった各アイテムタイプの実行カウントを保持する必要があります。これは、Hashbag
インターフェイスに完全に適しているようです。私はApache Commonsで私のために働くようだ。
これで、私のHashBagは[itemType、count]のエントリ(ペア)で埋められます。アルゴリズムの後半では、これらのペアに対して多くのリストのような操作を行う必要があります。場合によっては、コレクションをitemTypeでソートする必要があります。他のものでは、カウントでソートする必要があります。これは、List
インターフェイスに完全に適しているようです。
私は、Hasbagをリストに変換する必要があるという結論が残っています。しかし、それは何とか、空間と時間の無駄のように汚いと感じます。これを行うにはよりスマートな方法がありますか、別の時代にあなたのコレクションを別々に扱わなければならないプログラミング上の問題を抱えるのが一般的な状況ですか、変換は必要な悪ですか?
もう1つの選択肢は、真にリストである独自のインターフェイスを作成することですが、「バッグスタイル」を追加することができます。リストをソートしたままにしておき、何かを追加したいときはいつも、カスタムコンパレータを使ってバイナリ検索を実行する必要があります。そのコレクションを構築するには、おそらくハッシュバッグを構築するよりも時間がかかりますが、最後の変換ステップは不要です。どのような考えが望ましいですか?
ありがとうございます!
コレクションのソートはすでに* O(n log(n))*操作であることを思い出してください。 * O(n + n log(n))= O(n(1 + log(n))* - は無視できないほどの増加ではなく、劇的な増加ではありません。自分自身をしません並べ替えた場合、それらはもう一度、おそらくパフォーマンスを殺すことはありません。確かに、他の有効なオプションのように聞こえる – millimoose