Java 8 Lambda指定地图类型并使其不可修改
发布时间:2020-12-15 04:42:49 所属栏目:Java 来源:网络整理
导读:我有以下代码,使用lambdas生成数月. MapInteger,String tempMap = new LinkedHashMap(); EnumSet.allOf(Month.class).forEach(m - { String formattedMonth = DateTimeFormatter.ofPattern("MMM").format(m); tempMap.put(m.getValue(),formattedMonth); });
我有以下代码,使用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? 解决方法
你需要使用
the
Collectors.toMap overload that accepts a Supplier<Map<K,V>> :
Collectors.toMap(Month::getValue,m -> DateTimeFormatter.ofPattern("MMM").format(m)),(v1,v2) -> // whatever,LinkedHashMap::new) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 如何从三叶草覆盖率报告中排除方法(哈希码和等号)
- java – operator ==包装类对象上的差异行为
- 当Java中的集合超出容量时会发生什么?
- java – 拒绝HostKey:使用gradle ssh插件部署JAR时
- 元注解及自定义注解
- java-ee – mvn tomcat:运行 – 更改默认的maven tomcat端
- postman中 form-data、x-www-form-urlencoded、raw、binary
- Java 8升级导致编译器错误与继承的静态枚举
- java – ClassNotFoundException Android
- java – 在初始化对象或将其保存为变量并调用该方法时,调用