Devo creare un valore statico Map
che associa un dato String
a un array di int
.Come creare una mappa statica di stringhe -> Array
In altre parole, mi piacerebbe definire qualcosa di simile:
"fred" -> {1,2,5,8}
"dave" -> {5,6,8,10,11}
"bart" -> {7,22,10010}
... etc
C'è un modo semplice per fare questo in Java?
E se possibile, mi piacerebbe utilizzare le costanti static
per entrambi i valori String
e int
.
EDIT: chiarire che cosa volevo dire con static
costanti per i valori, e per dare quello che vedo essere il codice corretto, ecco il mio primo tentativo di soluzione:
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});
}
nota, questi nomi non sono quelli che effettivamente userò. Questo è solo un esempio forzato.
Ah, ma ho bisogno di dichiarare la mappa in una super classe, ma di popolarla in una sottoclasse. Scusa, so che non era nella mia domanda iniziale. Avrei ancora bisogno del blocco 'static' in questo caso? – DuncanKinnear
Ma poiché questo è 'statico', come può essere" un blocco di codice che viene eseguito in costruzione dopo il costruttore "? Ho pensato che la costruzione non si verifica quando si fa riferimento al codice 'static'. – DuncanKinnear
@DuncanKinnear l'istanza è statica, ma il blocco no. Il blocco è un blocco di istanza della classe anonima che viene istanziato staticamente. La classe anonima è una sottoclasse di 'HashMap', di cui esiste sempre una sola istanza (' new' viene chiamata una sola volta) – Bohemian