webentwicklung-frage-antwort-db.com.de

Workout für ImmutableMap.of () für HashMap in Maps?

Es gibt verschiedene Methoden, um ImmutableMap wie Immutable.of(Key, value) und deren Überladung zu erstellen. 

Diese Methoden existieren jedoch nicht für HashMap oder LinkedHashMap in der Klasse Maps

Gibt es eine bessere Möglichkeit, dies zu tun, oder Guava geht davon aus, dass eine solche Karte immer eine konstante Karte ist, und ImmutableMap die beste Option ist, und HashMap nicht zur Verfügung stehen muss.

27
Premraj

Warum sollten Sie diese für eine reguläre HashMap oder LinkedHashMap haben? Sie können dies einfach tun:

Map<String, Object> map = Maps.newHashMap();
map.put(key, value);

Die Sache mit ImmutableMap ist, dass die Erstellung etwas umständlicher ist. Sie müssen zuerst eine Builder erstellen, dann die Schlüssel-Wert-Paare in den Builder einfügen und dann build() aufrufen, um Ihre ImmutableMap zu erstellen. Die ImmutableMap.of()-Methode verkürzt das Schreiben, wenn Sie eine ImmutableMap mit einem einzigen Schlüsselwertpaar erstellen möchten.

Überlegen Sie, was Sie schreiben müssten, wenn Sie die ImmutableMap.of()-Methode nicht verwenden würden:

ImmutableMap<String, Object> map = ImmutableMap.builder()
    .put(key, value);
    .build();
17
Jesper

Maps.newHashMap(ImmutableMap.of(...)) ausprobieren

Maps.newHashMap(Map map)

15
user638455

Der Unterschied ist, dass Sie für eine unveränderliche Karte haben alles im Voraus bereitstellen müssen, da Sie sie nach der Konstruktion nicht ändern können. Bei veränderbaren Karten können Sie einfach die Karte erstellen und dann die Einträge hinzufügen. Das macht es zwar etwas schwieriger, eine Map in einem einzelnen Ausdruck zu erstellen, aber tend ist kein Problem, bei dem Sie nach meiner Erfahrung sowieso eine veränderliche Map wollen.

7
Jon Skeet

ImmutableMap.of() gibt eine Hash-basierte unveränderliche Karte ohne Reihenfolge zurück.

Wenn Sie eine beständige unveränderliche Karte benötigen, ist ImmutableSortedMap.of() eine Wahl. 

ImmutableSortedMap bietet Methoden wie firstKey(), lastKey(), headMap(K) und tailMap(K);

Beide Klassen stellen die copyOf(Map)-Methode bereit.

können Sie die copyOf-Methode von ImmutableMap nicht verwenden, die hier beschrieben wird?

es sollte so etwas sein 

Map newImmutableMap = ImmutableMap.copyOf(yourMap);
0
danny