Ich möchte etwas wie ImmutableLinkedHashMap<>
in Guava-Bibliothek zu finden. Ich muss eine unveränderliche Schlüssel-Wert-Datenstruktur mit einem Anzeigenauftrag verwenden. Also, was soll ich verwenden?Ich brauche eine unveränderliche Schlüssel-Wert-Struktur, die Einfügereihenfolge
Antwort
Ich bin nicht sicher, ob ich genau bin zu verstehen, was Sie nach, aber wenn es ein wirklich unveränderlich Map
ist, mght Sie bei ImmutableMap
aussehen wollen wie im doc erwähnt:
Ein unveränderbar, Hash-basiert
Map
mit zuverlässiger benutzerspezifizierter Iterationsreihenfolge. Erlaubt keine Nullschlüssel oder Werte.Im Gegensatz zu
Collections.unmodifiableMap(java.util.Map<? extends K, ? extends V>)
, die eine Ansicht einer separaten Karte ist, die sich noch ändern kann, enthält eine InstanzImmutableMap
ihre eigenen Daten und wird sich nie ändern.ImmutableMap
ist bequem fürpublic static final
Karten („constant Maps“) und lässt Sie auch einfach eine „defensive Kopie“ einer Karte auf Ihre Klasse von einem Anrufer
Eg vorgesehen machen, können Sie es in ähnlicher Weise verwenden:
Map<Integer, String> m = ImmutableMap.of(5,"Five",6,"Six",7,"Seven");
Hoffe, das war, was Sie wollten.
Ja, ich wollte das auch sagen. 'ImmutableMap' sieht aus wie es funktionieren sollte. – 808sound
Das Problem dabei ist, dass "ImmutableSortedMap" "ImmutableMap" erweitert, sodass Sie, wenn Sie über Clients dieser Methode verfügen, die Wartung von Anzeigenaufträgen nicht nach Typen erzwingen können. –
Erstellen Sie zunächst eine und verwenden Sie dann ImmutableMap.copyOf(linkedHashMap)
, um eine unveränderbare Kopie zu erstellen, die die gleiche Reihenfolge wie die ursprüngliche Karte hat.
Warum stören? 'ImmutableMap' verwendet bereits den Anzeigenauftrag. –
Siehe [Paket com.google.common.collect Beschreibung] (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/package-summary.html#package_description) und [Unveränderliche Sammlungen auf Guava Wiki erklärt] (https://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained). – Xaerxess
Mögliches Duplikat von [Google Collections ImmutableMap-Iterationsreihenfolge] (http://stackoverflow.com/questions/3810738/google-collections-immutablemap-iteration-order) – Barett