2009-07-22 11 views
0

私は巨大なテキストデータファイルの一部であるフラグのセットを1つの文字として持っています。 ファイルを処理する前に、私は各フラグをそれが表すプロパティのidにマップします。私は可能な限り速くこれらのマッピングをルックアップするために必要なファイルを処理する際 は(私はそれをたくさんやります)。整数をcharキーで格納するときに使用する最適なマップ実装は何ですか?

現在、私はHashMapの中でこれらを格納します。 そして、コードは次のようになります。

private HashMap<Integer, Integer> _propertyKeys; 

    private int _getKeyedProperty(char key) { 
     return (_propertyKeys.get((int) key)); 
    } 

は私がHashMapのより地図の優れた実装を使用して、より高速にこれをやったり、ボクシング/アンボクシングを防ぐために、配列を使用することができ方法はありますか?

+0

さて、あなたは65'536 int型のエントリを持つ配列を使用し、要素のインデックスとしてあなたの鍵を持つことができます。あなたはそれよりも時間のオーバーヘッドを減らすことはできないと思います。 – HerdplattenToni

答えて

2

あなたはGNUトローブからTIntIntHashMapを使用することができます。これは、キーと値のプリミティブを使用します。

私はGNUトローブプリミティブリストクラスを使用し、プリミティブのためにオートボクシング使用して、標準のリストクラスと比較すると、彼らは顕著なパフォーマンスの改善を与えることを見出しました。

+0

ありがとう、私はc#がすべての一般的なものの型としてプリミティブをサポートしているという事実を愛しています。 Pity Javaはそうではありません。あなたのリンクはローカルのJavaDocにあります:)確かにGoogleは私がそれを見つけるのを助けることができます。 –

+0

おっと....固定。 – Mark

0

あなたが使用されるフラグのフルセットがわかっている場合は、それらの列挙型を作成し、java.util.EnumMapを使用することができます。

関連する問題