我正在尋找一個「CLEAN & Simple」初始化ConcurrentHashMap的方法。Java 8 ConcurrentHashMap初始化
與Java 8我有這樣的: -
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<>
」
使得它很難看怎麼回事。
有什麼辦法可以「隱藏」這個並保持一條線?
UPDATE
想出了這個(明顯)解決方案
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(with(「foo」,「bar」),...,with(「key」,「value」));' –
@AndrewTobilko我在尋找一個「自我記錄」解決方案,像Builder模式。然後我可以添加De Duplication。一個約束是我更喜歡標準的Java解決方案。 – Hector
使用'static {}'塊?它不是單行的,但是通過字符數 – the8472