gpt4 book ai didi

java - 使用 java 8 流将字符串替换为 HashMap 值

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:27 31 4
gpt4 key购买 nike

我有 StringHashMap 如下代码:

Map<String, String> map = new HashMap<>();
map.put("ABC", "123");
String test = "helloABC";
map.forEach((key, value) -> {
test = test.replaceAll(key, value);
});

我尝试用 HashMap 值替换字符串,但这不起作用,因为 test 是最终的,不能在 的主体中重新分配forEach.

那么有什么解决方案可以使用 Java 8 Stream API 将 String 替换为 HashMap 吗?

最佳答案

因为这不能仅使用 forEach()(message 必须有效地最终),解决方法是创建一个最终容器(例如 List) 它存储一个被重写的 String:

final List<String> msg = Arrays.asList("helloABC");
map.forEach((key, value) -> msg.set(0, msg.get(0).replace(key, value)));
String test = msg.get(0);

请注意,我将 replaceAll() 更改为 replace()因为前者适用于正则表达式,但根据您的代码判断,您似乎需要用字符串本身替换(别担心,尽管名称令人困惑,它也会替换 所有 出现)。

如果你想要 Stream API,你可以使用 reduce()操作:

String test = map.entrySet()
.stream()
.reduce("helloABC",
(s, e) -> s.replace(e.getKey(), e.getValue()),
(s1, s2) -> null);

但请注意,这种缩减仅在串行(非并行)流中正常工作,其中永远不会调用组合器函数(因此可能是任何)。

关于java - 使用 java 8 流将字符串替换为 HashMap 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36172502/

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