将字符串附加到 StringBuilder(value),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));

标签: java

解决方案


map.computeIfAbsent(“key”, k -> new StringBuilder()).append(s);

k -> new StringBuilder() 是一个 lambda 函数。这里 k 代表地图中的当前键。也就是说,如果映射不包含“键”,则使用此 lambda 计算一个值。lambda 接受一个键并返回一个值。由于在这种情况下值不依赖于键的值,所以我们直接返回一个新的 StringBuilder。然后我们简单地附加我们的字符串 s


推荐阅读