ConcurrentHashMapを初期化する「CLEAN & Simple」メソッドを探しています。私は、この持っているのJava 8でJava 8 ConcurrentHashMapの初期化
: - 所望の最終結果を提供
private static final Map<String, String> myStreamedMap = Stream.of(
new AbstractMap.SimpleImmutableEntry<>("Key1", "Value1"),
new AbstractMap.SimpleImmutableEntry<>("Key2", "Value2"),
new AbstractMap.SimpleImmutableEntry<>("Key3", "Value3"),
new AbstractMap.SimpleImmutableEntry<>("Key4", "Value4")).
collect(Collectors.toMap((entry) -> entry.getKey(), (entry) -> entry.getValue()));
は、しかし、私は
"new AbstractMap.SimpleImmutableEntry<>
"
が起こっていただきました、それは難しいご覧になり感じます。
これを「非表示」して1行にすることはできますか?
UPDATE
は、Java 9がリリースされるまで、そこに内蔵されたマップの初期化メソッドがない便利であるので、私は第三を見てお勧めします。この(明らかな)ソリューション
private static final Map<String, String> myStreamedMapWith = Stream.of(
with("Key1", "Value1"),
with("Key2", "Value2"),
with("Key3", "Value3"),
with("Key4", "Value4")).
collect(Collectors.toMap((entry) -> entry.getKey(), (entry) -> entry.getValue()));
private static AbstractMap.SimpleImmutableEntry<String, String> with(final String key, final String value) {
return new AbstractMap.SimpleImmutableEntry<>(key, value);
}
は、あなたが期待したことを説明する独自の方法を抽出します。例えば: 'mapOf(" foo "、" bar ")、...、with(" key "、" value "));' –
@AndrewTobilko私は "自己文書化"ソリューションを探しています。 Builderパターンのように。 De Duplicationを追加することができました。一つの制約は、私が標準のJavaソリューションを好むことです。 – Hector
'static {}'ブロックを使用していますか?それは単線ではなく文字数ではるかに短いです – the8472