13

指定された aを の配列にMapマップする static を作成する必要があります。Stringint

つまり、次のように定義したいと思います。

"fred" -> {1,2,5,8}
"dave" -> {5,6,8,10,11}
"bart" -> {7,22,10010}
... etc

Javaでこれを行う簡単な方法はありますか?

static可能であれば、 と の両方Stringの値に定数を使用したいと思いintます。

編集:値の定数の意味を明確にし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});
}

これらの名前は、私が実際に使用するものではないことに注意してください。これは単なる例です。

4

6 に答える 6

9

静的マップを個別に宣言して初期化する必要があります。

宣言部分は次のとおりです。

private static final Map<String,int[]> MyMap;

ここに初期化ピースがあります:

static {
    Map<String,int[]> tmpMap = new HashMap<String,int[]>();
    tmpMap.put("fred", new int[] {1,2,5,8});
    tmpMap.put("dave", new int[] {5,6,8,10,11});
    tmpMap.put("bart", new int[] {7,22,10010});
    MyMap = Collections.unmodifiableMap(tmpMap);
}

残念ながら、Java では配列は常に書き込み可能です。を割り当てることはできませんがMyMap、マップにアクセスするプログラムの他の部分から値を追加または削除することはできます。

于 2012-11-18T23:28:02.253 に答える
1
static Map<String, int[]> map = new HashMap<>();

マップは静的であり、定義されているクラスのインスタンスを作成せずにアクセスできます。キーと値も静的にすることの意味がわかりません。私には意味がないからです。

于 2012-11-18T23:27:02.560 に答える
0
public class ExampleClass {
    public final static HashMap consts = new HashMap();
    static
    {
        constants.put("A", "The Letter A");
        constants.put("B", "The Letter B");
        constants.put("C", "The Letter C");
    }
    /* Rest of your class that needs to know the consts */
}
于 2014-09-09T16:07:43.557 に答える