2013-02-20 54 views
13

我想在番石榴庫中找到類似ImmutableLinkedHashMap<>的東西。 我需要使用帶有插入順序的不可變鍵值數據結構。 那麼,我該用什麼?我需要一個不變的鍵值結構,保留插入順序

+2

請參閱[程序包com.google.common.collect說明](http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/package-summary.html#package_description)和[在Guava wiki上的ImmutableCollectionsExplained](https://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained)。 – Xaerxess 2013-02-20 15:01:43

+0

[Google Collections ImmutableMap迭代順序]的可能重複(http://stackoverflow.com/questions/3810738/google-collections-immutablemap-iteration-order) – Barett 2016-07-27 17:51:40

回答

24

我不知道我的理解正是你所追求的,但如果它確實是一個不可改變的Map,你mght想看看ImmutableMap

如文檔中提到:

的不可變,基於散列的Map,具有可靠的用戶指定迭代次序。不允許空鍵或值。

不同於Collections.unmodifiableMap(java.util.Map<? extends K, ? extends V>),這是一個單獨的地圖,其仍然可以改變的視圖,的ImmutableMap實例包含它自己的數據,並永遠不會改變。 ImmutableMap方便public static final地圖(「恆圖」),也可以讓你輕鬆地通過呼叫者

例如使提供給你的類地圖的「防禦性複製」,可以以類似的方式使用它:

Map<Integer, String> m = ImmutableMap.of(5,"Five",6,"Six",7,"Seven"); 

希望這是你以後的樣子。

+0

是的,我只是想說這一點。 'ImmutableMap'看起來應該起作用。 – 808sound 2013-02-20 15:00:57

+0

這個問題是'ImmutableSortedMap'擴展了'ImmutableMap',所以如果你有這個方法的客戶端,你不能通過類型強制執行插入順序維護。 – 2016-01-13 16:57:46

6

首先創建一個LinkedHashMap,然後使用ImmutableMap.copyOf(linkedHashMap)創建一個不變的副本,它具有與原始地圖相同的順序。

+17

爲什麼要麻煩? ImmutableMap已經使用插入順序。 – 2013-02-21 16:25:03

相關問題