gpt4 book ai didi

java - 使用附加值或新值扩展 ImmutableMap

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:18 38 4
gpt4 key购买 nike

很像 ImmutableList 可以这样扩展:

ImmutableList<Long> originalList = ImmutableList.of(1, 2, 3);
ImmutableList<Long> extendedList = Iterables.concat(originalList, ImmutableList.of(4, 5));

如果我有一个现有 map ,我该如何扩展它(或创建一个具有替换值的新副本)?

ImmutableMap<String, Long> oldPrices = ImmutableMap.of("banana", 4, "apple", 7);
ImmutableMap<String, Long> newPrices = … // Increase apple prices, leave others.
// => { "banana": 4, "apple": 9 }

(我们不要寻求有效的解决方案,显然是 that doesn't exist by design 。这个问题而是寻求最惯用的解决方案。)

最佳答案

您可以明确地创建一个构建器:

ImmutableMap<String, Long> oldPrices = ImmutableMap.of("banana", 4, "apple", 7);
ImmutableMap<String, Long> newPrices =
new ImmutableMap.Builder()
.putAll(oldPrices)
.put("orange", 9)
.build();

编辑:
如评论中所述,这将不允许覆盖现有值。这可以通过遍历不同 Map(例如,HashMap)的初始化程序 block 来完成。它一点也不优雅,但它应该可以工作:

ImmutableMap<String, Long> oldPrices = ImmutableMap.of("banana", 4, "apple", 7);
ImmutableMap<String, Long> newPrices =
new ImmutableMap.Builder()
.putAll(new HashMap<>() {{
putAll(oldPrices);
put("orange", 9); // new value
put("apple", 12); // override an old value
}})
.build();

关于java - 使用附加值或新值扩展 ImmutableMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29828829/

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