2013-02-20 14 views
13

GuavaライブラリにImmutableLinkedHashMap<>のようなものを見つけたいと思います。 挿入オーダーの不変キー値データ構造を使用する必要があります。 だから、私は何を使うべきですか?私は、挿入順序を保持する不変のキーと値の構造が必要です

+2

[パッケージcom.google.common.collectの説明](http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/package-summary.html#package_description) [ImmutableCollectionsExplained Guava wiki](https://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained)を参照してください。 – Xaerxess

+0

[Google Collections ImmutableMap iteration order]の複製があります。(http://stackoverflow.com/questions/3810738/google-collections-immutablemap-iteration-order) – Barett

答えて

24

私はあなたが後にしている私は、正確に理解していますかわからないが、それはMap本当に不変であれば、あなたは、docで述べたようImmutableMap

を見てみたいmght:

アン信頼性の高いユーザー指定の繰り返し順序で、不変のハッシュベースのMap nullキーまたは値を許可しません。

Collections.unmodifiableMap(java.util.Map<? extends K, ? extends V>)は、まだ変更可能な別のマップのビューですが、ImmutableMapのインスタンスには独自のデータが含まれており、決して変更されません。 ImmutableMappublic static finalマップ(「定数マップ」)のために便利であり、また、あなたが同様の方法でそれを使用することができ、あなたは簡単に、発信者

等により、あなたのクラスに用意マップの「防衛的コピー」を行うことができます:

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

希望はこれまでのものです。

+0

はい、私はそれについても言います。 'ImmutableMap'は動作するはずです。 – 808sound

+0

この問題は、 'ImmutableSortedMap'が' ImmutableMap'を拡張しているので、このメソッドのクライアントを持っている場合は、タイプ別に挿入オーダーのメンテナンスを強制することはできません。 –

6

最初にLinkedHashMapを作成し、ImmutableMap.copyOf(linkedHashMap)を使用して元のマップと同じ順序を持つ不変のコピーを作成します。

+17

なぜ気になるのですか? 'ImmutableMap'はすでに挿入命令を使用しています。 –

関連する問題