Ich muss eine statische Map
erstellen, die eine gegebene String
auf ein Array von int
s abbildet.So erstellen Sie eine statische Zuordnung von String -> Array
Mit anderen Worten, würde Ich mag, wie etwas definieren:
"fred" -> {1,2,5,8}
"dave" -> {5,6,8,10,11}
"bart" -> {7,22,10010}
... etc
Gibt es eine einfache Möglichkeit, dies in Java zu tun?
Und wenn möglich, würde ich gerne static
Konstanten sowohl für die String
als auch die int
Werte verwenden.
EDIT: Um zu klären, was ich von static
Konstanten für die Werte gemeint, und zu geben, was ich sehe, der richtige Code zu sein, hier ist mein erster Stich an der Lösung:
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});
}
Hinweis, Diese Namen sind nicht das, was ich tatsächlich benutzen würde. Dies ist nur ein künstliches Beispiel.
Ahh, aber ich muss die Karte in einer Super-Klasse deklarieren, aber füllen Sie es in einer Unterklasse. Tut mir leid, ich weiß, das war nicht in meiner ursprünglichen Frage. Ich würde immer noch den "statischen" Block in diesem Fall benötigen? – DuncanKinnear
Aber da dies "statisch" ist, wie kann es "ein Block von Code sein, der auf Konstruktion nach Konstruktor ausgeführt wird"? Ich dachte, dass Konstruktion nicht auftritt, wenn Sie auf "statischen" Code verweisen. – DuncanKinnear
@Duncankinnear die Instanz ist statisch, aber der Block ist nicht. Der Block ist ein Instanzenblock der anonymen Klasse, die statisch instanziiert wird. Die anonyme Klasse ist eine Unterklasse von 'HashMap', von der immer nur eine Instanz existiert (' new' wird nur einmal aufgerufen) – Bohemian