Chcę znaleźć coś w rodzaju biblioteki ImmutableLinkedHashMap<>
w bibliotece Guava. Potrzebuję użyć niezmiennej struktury danych klucz-wartość ze zleceniem reklamowym. Więc, co powinienem użyć?Potrzebuję niezmiennej struktury klucz-wartość, która zachowuje kolejność wprowadzania
Odpowiedz
Nie jestem pewien, mam dokładnie zrozumieć, co jesteś po, ale jeśli jest to naprawdę niezmienne Map
, mght chcesz spojrzeć na ImmutableMap
Jak wspomniano w dokumencie:
An niezmienny, oparty na hashu
Map
z niezawodną kolejnością iteracji określoną przez użytkownika. Nie zezwala na puste klucze ani wartości.W przeciwieństwie do
Collections.unmodifiableMap(java.util.Map<? extends K, ? extends V>)
, który jest widokiem oddzielnej mapy, która wciąż może się zmienić, wystąpienieImmutableMap
zawiera własne dane i nigdy się nie zmieni.ImmutableMap
jest wygodne dlapublic static final
mapy („Constant mapy”), a także pozwala łatwo zrobić „kopię obronną” z mapą przewidzianego do klasy przez dzwoniącego
przykład można użyć go w podobny sposób:
Map<Integer, String> m = ImmutableMap.of(5,"Five",6,"Six",7,"Seven");
Mam nadzieję, że właśnie o to prosiłeś.
Tak, chciałem to również powiedzieć. Wygląda na to, że 'ImmutableMap' powinno działać. – 808sound
Problem polega na tym, że 'ImmutableSortedMap' rozszerza' ImmutableMap', więc jeśli posiadasz klientów tej metody, nie możesz wymusić konserwacji zlecenia przez typy. –
Najpierw utwórz LinkedHashMap
, a następnie użyj ImmutableMap.copyOf(linkedHashMap)
, aby utworzyć niezmienną kopię, która będzie miała taką samą kolejność, jak oryginalna mapa.
Po co zawracać sobie głowę? 'ImmutableMap' już używa kolejności reklam. –
Zobacz [Pakiet com.google.common.collect Description] (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/package-summary.html#package_description) i [ImmutableCollectionsExplained na wiki Guava] (https://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained). – Xaerxess
Możliwy duplikat [Google ImmutableMap iteration order] (http://stackoverflow.com/questions/3810738/google-collections-immutablemap-iteration-order) – Barett