Voglio trovare qualcosa come ImmutableLinkedHashMap<>
nella libreria Guava. Ho bisogno di utilizzare una struttura di dati valore-chiave immutabile con un ordine di inserimento. Quindi, cosa dovrei usare?Ho bisogno di una struttura di valori-chiave immutabile che mantenga l'ordine di inserimento
risposta
io non sono sicuro che sto capire esattamente che cosa siete dopo, ma se si tratta di una realtà immutabile Map
, si mght voglio guardare ImmutableMap
Come menzionato nel documento:
An immutabile, basato su hash
Map
con ordine di iterazione specificato dall'utente specificato. Non consente chiavi o valori nulli.A differenza di
Collections.unmodifiableMap(java.util.Map<? extends K, ? extends V>)
, che è una vista di una mappa separata che può ancora cambiare, un'istanza diImmutableMap
contiene i propri dati e non cambierà mai.ImmutableMap
è conveniente perpublic static final
mappe ("mappe costanti") e consente inoltre di effettuare facilmente una "copia difensiva" di una mappa fornita alla classe da un chiamante
Ad esempio, si potrebbe usare in modo simile:
Map<Integer, String> m = ImmutableMap.of(5,"Five",6,"Six",7,"Seven");
Spero che questo sia quello che cercavi.
Sì, stavo per dire anche questo. 'ImmutableMap' sembra che dovrebbe funzionare. – 808sound
Il problema è che "ImmutableSortedMap" estende "ImmutableMap", quindi se si dispone di client con questo metodo, non è possibile imporre la manutenzione degli ordini di inserimento in base ai tipi. –
Creare prima un LinkedHashMap
e quindi utilizzare ImmutableMap.copyOf(linkedHashMap)
per creare una copia immutabile che avrà lo stesso ordine della mappa originale.
Perché preoccuparsi? 'ImmutableMap' utilizza già l'ordine di inserimento. –
Vedere [Descrizione pacchetto com.google.common.collect] (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/package-summary.html#package_description) e [ImmutableCollectionsExplained su wiki Guava] (https://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained). – Xaerxess
Possibile duplicato di [Ordine di iterazione ImmutableMap di Google Collections] (http://stackoverflow.com/questions/3810738/google-collections-immutablemap-iteration-order) – Barett