Javaを使用し、v1.6と仮定します。Javaでの文字列インデックス付きコレクション
ユニークなインデックスが文字列で、一意でない値がintであるコレクションがあります。 できるだけ早くこのコレクションに対して何千ものルックアップを実行する必要があります。
私は現在HashMap<String, Integer>
を使用していますが、Integer to intのboxing/unboxingがこれをより遅くしていることが心配です。
私は、int[]
と結合されたArrayList<String>
を使用することを考えていました。
すなわち、代わりの:
int value = (int) HashMap<String, Integer>.get("key");
私は
int value = int[ArrayList<String>.indexOf("key")];
任意の考えを行うことができますか?これを行うより速い方法がありますか?
p.s.私はコレクションを一度しか作成せず、一度変更することがありますが、サイズがわかるたびにArrayList
の代わりにString[]
を使用しますが、indexOfを複製する方法がわかりません。
ベンチマークが適切にこれをテストするための唯一の方法になるだろうよう –
が見える...全体の問題は無関係になり答えを与えるためにジョンスキートにそれを残します。 私はunboxingが安いことを知らなかった。私はボトルネックを見つけるためにいくつかのプロファイリングをしなければならないでしょう。 これは、2の内部構造に基づいています。これはすばやく行う必要があります。ArrayList .indexOfまたはHashMap .get –
申し訳ありませんが、もう1つのコメント。これは大きなヒットです。私はここで得ることができるすべてのマイクロ秒を必要とします:) –