2012-09-06 13 views
8

私はこれまで対処していなかった問題に遭遇しました。私は基本的に特定の行に格納されているデータを変換しているjavaのデータベース用のパッチを書いています。これを行うために、私はどの値が何になるかを教える変換テーブルを持っています。定義済みの値でハッシュマップを設定する(Java)

例:「RC」、「AC」、「GH」のいずれかを読み込んだ場合、値を「T1」に更新します。 (これは単なるランダムな例であり、基本的にはある文字列を別の文字列に変換しています)。

これらの変換を保存するには、良い方法が必要です。私はハッシュマップを考えていました: キー、値:(RC、T1)(AC、T1)(GH、T1)など。

ここでは、数十種類のものがあります。パッチが初期化されたときにこのハッシュマップにデータを埋め込むためのきれいな方法はありますか?

答えて

18

その後、あなたはすべてがあなたのコード内で一緒に設定されていることを確認してくださいwuld例

private static final Map<String, String> m = new HashMap<String, String>() {{ 
    put("RC", "T1"); 
    put("AC", "T1"); 
}}; 

についてのHashMap

を設定しながら、私は初期化を行うだろう。

@ Nambariは単なる文字列ではなくリストとしての価値を持っていると思います。これはあなたのキーと値をスワップします。

例えば

private static final Map<String, List<String>> m = new HashMap<String, List<String>>() {{ 
    put("T1", Arrays.asList("RC", "AC"); 
}}; 
+0

ありがとう!それは私が思っていたことのようなものです(あなたの最初の例)。本当にきれいなやり方があるかもしれないと思っていましたが、私は落ち着かなくてはいけないと思っています。確かにRNJに大変感謝しています。 – user1652875

+0

@ user1652875私はそれが宣言と同じ場所に初期化を持っているのがやや整頓していると思います。次に、地図に何らかのデータが含まれていることがわかります。 – RNJ

0

リストRC,AC,GHを値として使用し、T1をハッシュマップのキーとして使用すると、マップのエントリ数を減らすことができます。

+0

しかし、このような構造内のルックアップの複雑さは、任意の良いことではないだろう - どのようにあなたは、「RC」のための交換のために見上げたときに言って、そのようなマップを検索しますか? –

+0

キーが少ない(T1、T2など)場合は、これは簡単なアプローチです。少ないキーであれば、entrySet()を取得して再生できます。キーの数も多い場合は、ルックアップ時間が長くなります。再び、それはトレードオフであり、一方の場所での単純さは、他方の場所では複雑さを生じさせる。 – kosa

0

あなたは、ApacheコモンズからPropertiesConfigurationを使用することができます。

値には値デリミタを含めることができ、トークンのリストとして解釈されます。デフォルト値デリミタはコンマ '、'です。したがって、次のプロパティ定義

key = This property, has multiple, values 
関連する問題