[英]Java 8 Lambda specify map type and make it unmodifiable
我有以下代码,使用lambdas生成数月。
Map<Integer, String> tempMap = new LinkedHashMap<>();
EnumSet.allOf(Month.class).forEach(m -> {
String formattedMonth = DateTimeFormatter.ofPattern("MMM").format(m);
tempMap.put(m.getValue(), formattedMonth);
});
MONTHS_MAP = Collections.unmodifiableMap(tempMap);
我想知道是否可以使用lambdas一次性完成所有这些操作?
return EnumSet.allOf(Month.class).stream()
.collect(Collectors.collectingAndThen(Collectors.toMap(
Month::getValue,
m -> DateTimeFormatter.ofPattern("MMM").format(m)
), Collections::unmodifiableMap));
这不起作用。 我在哪里指定我想使用LinkedHashMap?
您需要使用接受Supplier<Map<K, V>>
的Collectors.toMap
重载 :
Collectors.toMap(Month::getValue,
m -> DateTimeFormatter.ofPattern("MMM").format(m)),
(v1, v2) -> // whatever,
LinkedHashMap::new)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.