我需要創建一個靜態Map
,它將給定的String
映射到int
的陣列。如何創建字符串的靜態映射 - >陣列
換句話說,我想定義是這樣的:
"fred" -> {1,2,5,8}
"dave" -> {5,6,8,10,11}
"bart" -> {7,22,10010}
... etc
有沒有一種簡單的方法在Java中做到這一點?
如果可能的話,我想使用和int
值爲static
常量。
編輯:爲了澄清我的意思通過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});
}
注,這些名字不是我實際使用的。這只是一個人爲的例子。
啊,但我需要在一個超類中聲明Map,但是將它填充到一個子類中。對不起,我知道這不是我原來的問題。在這種情況下,我仍然需要'static'塊? – DuncanKinnear
但是,由於這是'static',它怎麼可能是「構造函數之後在構造上執行的代碼塊」?當你參考'static'代碼時,我認爲構造不會發生。 – DuncanKinnear
@DuncanKinnear實例是靜態的,但塊不是。該塊是靜態實例化的匿名類的實例塊。匿名類是'HashMap'的子類,其中只有一個實例存在('new'只被調用一次) – Bohemian