2016-09-09 24 views
0

String型のコレクションで検索する必要があるString型があります。必要なString(元の表現、トリム、UTF-8エンコード、非ASCIIエンコード)の複数の表現の検索を行う必要があります。コレクションのサイズは、数千のオーダーになります。String型のコレクションのコレクション型

私は最高のパフォーマンスを持っているために、収集のために使用するのに最適な表現で何を把握しようとしている:

  1. のArrayListを - 要素のいずれかのいずれかに一致する場合は、配列を反復処理し、確認してください文字列の表現
  2. HashMap - マップに文字列の表現が含まれているかどうかを確認します。
  3. 他の文字列ですか?
+2

「HashMap」ではなく「HashSet」ではないのはなぜですか? – Tom

+0

@Tom .. HashSetはHashMapを使用してその実装を戻します –

+0

Listを使用する場合、配列を反復処理する必要はありません。文字列のさまざまな形式を含むだけを使用してください。 – Jacob

答えて

0

一般的に言えば、HashMap(または他のハッシュテーブルベースのデータ構造)は、「ルックアップ」エクササイズの方がはるかに好ましいものです。理由は簡単です、それらのデータ構造は一定時間(コレクションのサイズとは無関係)でルックアップをサポートします。 しかし、あなたのシナリオ(コレクションのための単一のクエリ)では、おそらくArrayListの代わりにHashMapを使用することでパフォーマンスの向上は得られません。理由:

  1. ハッシュマップにデータを入れるには時間がかかります。重要な時間ではなく、初期リストの1回のフルパスに匹敵します。
  2. あなたのコレクションはかなり小さく、5000個以上の要素を繰り返し処理するのは数ミリ秒(またはそれ以上)です。あなたは一度だけ "検索"する必要があるので、あなたはそれに多くの時間を節約しません。
関連する問題