我想在HashMap中变换键。该地图有lower_underscore键,但预期的地图应该有camelCase键。该地图也可能具有空值。映射映射键的最佳方式
的straightfoward代码要做到这一点是在这里:
Map<String, Object> a = new HashMap<String, Object>() {{
put("foo_bar", 100);
put("fuga_foga", null); // A value may be null. Collectors.toMap can't handle this value.
}};
Map<String, Object> b = new HashMap<>();
a.forEach((k,v) -> b.put(toCamel(k), v));
我想知道要做到这一点像番石榴的Maps.transformValues()或Maps.transformEntries()方法,但这些方法只是转换值。
Collectors.toMap()也是关闭的,但是当存在空值时,此方法会抛出NullPointerException。
Map<String, Object> collect = a.entrySet().stream().collect(
Collectors.toMap(x -> toCamel(x.getKey()), Map.Entry::getValue));
关于'Collectors:toMap' NPE的讨论http://stackoverflow.com/questions/24630963/java-8-nullpointerexception-in-collectors-tomap – Dhananjay