gpt4 book ai didi

java - 映射 map 键的最佳方式

转载 作者:行者123 更新时间:2023-12-01 21:21:58 25 4
gpt4 key购买 nike

我想转换 HashMap 中的键。该映射具有 lower_underscore 键,但预期的映射应具有驼峰式键。 map 也可能有空值。

执行此操作的简单代码在这里:

    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));

我想知道像 Guava 的 Maps.transformValues() 或 Maps.transformEntries() 这样的方法,但这些方法只是转换值。

Collectors.toMap() 也很接近,但是当存在 null 值时,此方法会抛出 NullPointerException。

    Map<String, Object> collect = a.entrySet().stream().collect(
Collectors.toMap(x -> toCamel(x.getKey()), Map.Entry::getValue));

最佳答案

如果你绝对想使用流来解决这个问题,你可以这样做:

Map<String, Object> b = a.entrySet()
.stream()
.collect(HashMap::new,
(m, e) -> m.put(toCamel(e.getKey()), e.getValue()),
HashMap::putAll);

但是我发现你的问题中显示的“传统”方式更容易阅读:

Map<String, Object> b = new HashMap<>();
a.forEach((k,v) -> b.put(toCamel(k), v));

关于java - 映射 map 键的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38987918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com