Es gibt keinen direkten Weg, dies zu tun - Stand 2021 hat Java keine Map-Literale (noch nicht - ich glaube, sie wurden für Java 8 vorgeschlagen, haben es aber nicht geschafft).
Einige Leute mögen das hier:
Map test = new HashMap(){{
put("test","test"); put("test","test");}};
Dies erstellt eine anonyme Unterklasse von HashMap, deren Instanz-Initializer diese Werte setzt. (Übrigens, eine Map kann nicht zweimal den gleichen Wert enthalten, dein zweiter put überschreibt den ersten. Ich werde für die nächsten Beispiele unterschiedliche Werte verwenden.)
Der normale Weg wäre dieser (für eine lokale Variable):
Map test = new HashMap();
test.put("test","test");
test.put("test1","test2");
Wenn deine test
Map eine Instanzvariable ist, platziere die Initialisierung in einem Konstruktor oder Instanzinitializer:
Map test = new HashMap();
{
test.put("test","test");
test.put("test1","test2");
}
Wenn deine test
Map eine Klassenvariable ist, platziere die Initialisierung in einem statischen Initializer:
static Map test = new HashMap();
static {
test.put("test","test");
test.put("test1","test2");
}
Wenn du möchtest, dass deine Map sich nie ändert, solltest du nach der Initialisierung deine Map mit Collections.unmodifiableMap(...)
umschließen. Du kannst dies auch in einem statischen Initializer tun:
static Map test;
{
Map temp = new HashMap();
temp.put("test","test");
temp.put("test1","test2");
test = Collections.unmodifiableMap(temp);
}
(Ich bin mir nicht sicher, ob du jetzt test
final machen kannst ... probiere es aus und berichte hier.)
Seit Java 9 hast du auch die Map.of(...) und Map.ofEntries() Syntax, wie in der Antwort von yankee erklärt.
1 Stimmen
Relatd: stackoverflow.com/questions/2041778/
0 Stimmen
Eng verwandt: stackoverflow.com/questions/507602/… (Beide Fragen handeln davon, eine konstante Map mit statischen, finalen Werten zu initialisieren.)
0 Stimmen
stackoverflow.com/questions/36951414/…
0 Stimmen
In Java 9: techiedelight.com/initialize-map-java9 In Java 9: techiedelight.com/initialize-map-java9
0 Stimmen
Wenn Sie apache.commons.collections verwenden, können Sie commons.apache.org/proper/commons-collections/javadocs/… verwenden.
0 Stimmen
Da hier keine Antwort mehr erlaubt ist, siehe stackoverflow.com/questions/507602/…
0 Stimmen
Überprüfen Sie soyuz-to -
to.map("myKey", "myValue")
. Es ist sehr einfach und hat viele weitere nützliche Funktionen.4 Stimmen
Nicht ein Duplikat der verlinkten Frage. Diese Frage handelt von
static
, während diese Frage nach der Instanziierung durch literale Syntax fragt. Abstimmung zur Wiedereröffnung. Möglicherweise ist diese Frage ein Duplikat einer anderen Frage; wenn ja, wiedereröffnen und erneut schließen, indem auf eine Frage verlinkt wird, die wirklich ein Original dieser ist.