java - 使用 Map 的方法 merge()将字符串附加到 StringBuilder(value)
问题描述
我知道如果我有一个Map< Character, Integer>
而不是这样做:
示例_1:
int value = map.get(key);
if (value != null) {
map.put(key, value + 1);
} else {
map.put(key, 1);
}
我可以在 ONE 行中执行与 Example_1 相同的操作。
示例_2:
map.merge(c, 1, Integer::sum);
我想知道是否可以使用Map<Integer,StringBuilder>
.
示例_3:
String s = "something";
StringBuilder value = map.get(key);
if (value != null) {
map.get(key).append(s);
} else {
map.put(key, new StringBuilder(s));
}
所以我想知道是否有更优雅的方式来使用 merge() 方法或类似方法来表达 Example_3 中的代码。
我试过这个但它不起作用:
示例_4:
map.merge(key, new StringBuilder(s), value.append(s));
解决方案
map.computeIfAbsent(“key”, k -> new StringBuilder()).append(s);
k -> new StringBuilder() 是一个 lambda 函数。这里 k 代表地图中的当前键。也就是说,如果映射不包含“键”,则使用此 lambda 计算一个值。lambda 接受一个键并返回一个值。由于在这种情况下值不依赖于键的值,所以我们直接返回一个新的 StringBuilder。然后我们简单地附加我们的字符串 s
推荐阅读
- php - WooCommerce 订单相关预订的自定义电子邮件主题占位符
- c# - 根据另一个列表的顺序对列表进行排序
- python - 如何在 html 中查找具有“赞助帖子”类的元素?
- python - 将星期几插入 Python 数据框中
- python - 当除数和/或被除数是浮点数时,为什么 Python 地板除法会返回浮点数?
- excel - 匹配单元格(使用 Vlooking、索引、匹配)
- python - NumPy 数组形状错误的维度
- java - 如何阻止 maven-assembly-plugin 在 windows 上的 eclipse 中使用旧版本
- javascript - TypeError:无法读取未定义的属性“长度”(第 13 行,文件“代码”)
- multithreading - Golang中偏移值的循环实现,用于从couchbase n1ql查询中获取的记录数