Immutable.of(Key, value)
およびそのオーバーロードのようなImmutableMap
を作成するユーティリティメソッドがあります。
しかし、そのようなメソッドは、HashMap
クラスのLinkedHashMap
またはMaps
には存在しません。
これを行うより良い方法はありますか、グアバはそのようなマップが常に一定のマップであり、ImmutableMap
が最適なオプションであり、HashMap
。
通常のHashMap
またはLinkedHashMap
にそれらが必要なのはなぜですか?これを行うことができます:
_Map<String, Object> map = Maps.newHashMap();
map.put(key, value);
_
ImmutableMap
の利点は、作成するのが少し面倒になることです。最初にBuilder
を作成し、次にビルダーにキーと値のペアを配置し、build()
を呼び出してImmutableMap
を作成する必要があります。 ImmutableMap.of()
メソッドを使用すると、単一のキーと値のペアでImmutableMap
を作成する場合の記述が短くなります。
ImmutableMap.of()
メソッドを使用しない場合は、何を書く必要があるかを考えてください。
_ImmutableMap<String, Object> map = ImmutableMap.builder()
.put(key, value);
.build();
_
Maps.newHashMap(ImmutableMap.of(...))
を試してください
違いは、不変マップの場合、構築後に変更できないため、すべてを事前に提供するためにhaveを使用することです。変更可能なマップの場合、マップを作成してからエントリを追加するだけです。確かに、これは単一の式でマップを作成するのを少し難しくしますが、それはtendとは言えません。
copyOf
のImmutableMap
メソッドは使用できません here ?
それは次のようなものでなければなりません
Map newImmutableMap = ImmutableMap.copyOf(yourMap);
ImmutableMap.of()
は、ハッシュベースの順序なしの不変マップを返します。
順序付けされた不変のマップが必要な場合、ImmutableSortedMap.of()
が選択肢です。
ImmutableSortedMapは、firstKey()
、lastKey()
、headMap(K)
、_tailMap(K)
などのメソッドを提供します。
両方のクラスはcopyOf(Map)
メソッドを提供します。