我想在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