web-dev-qa-db-ja.com

挿入順序を保持する不変のKey-Value構造が必要です

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

23

あなたが何を求めているのか正確にはわかりませんが、それが本当に不変のMapである場合は、 ImmutableMap を確認する必要があります。

ドキュメントに記載されているように:

信頼できるユーザー指定の反復順序を持つ不変のハッシュベースの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");

これがあなたが求めていたものであることを願っています。

31
mdm

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

8
dogbane