String
をint
の配列にマップする静的Map
を作成する必要があります。言い換えればString - > Arrayの静的マップを作成する方法
、私は次のように定義したいと思います:
"fred" -> {1,2,5,8}
"dave" -> {5,6,8,10,11}
"bart" -> {7,22,10010}
... etc
は、Javaでこれを行う簡単な方法はありますか?
可能であれば、String
とint
の両方の値には、static
の定数を使用したいと思います。
EDIT:私は値のためstatic
定数によって何を意味するのか明確にするために、私は正しいコードであることを見るもの与えることを、ここに解決策で私の最初の刺し傷である:
public final static String FRED_TEXT = "fred";
public final static String DAVE_TEXT = "dave";
public final static int ONE = 1;
public final static int TWO = 2;
public final static int THREE = 3;
public final static int FOUR = 4;
public final static HashMap<String, int[]> myMap = new HashMap<String, int[]>();
static {
myMap.put(FRED_TEXT, new int[] {ONE, TWO, FOUR});
myMap.put(DAVE_TEXT, new int[] {TWO, THREE});
}
注意、これらの名前は私が実際に使っているものではありません。これは単なる人為的な例です。
ああ、私はスーパークラスでマップを宣言する必要がありますが、サブクラスでそれを設定します。申し訳ありませんが、私はこれが私の元の質問にはなかったことを知っています。私はまだ 'static'ブロックが必要でしょうか? – DuncanKinnear
しかし、これは 'static'なので、「コンストラクタの後に構築時に実行されるコードブロック」とはどのようになりますか?静的なコードを参照するときには構造が発生しないと思っていました。 – DuncanKinnear
@DuncanKinnearインスタンスは静的ですが、ブロックはありません。ブロックは静的にインスタンス化されている匿名クラスのインスタンスブロックです。匿名クラスは 'HashMap'のサブクラスです。インスタンスは1つしか存在しません(' new'は一度だけ呼び出されます)。 – Bohemian