gpt4 book ai didi

java - 将循环(while 和 for)转换为流

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:29 25 4
gpt4 key购买 nike

我已经开始使用 Java 8 并尝试将我代码中的一些循环和旧语法转换为 lambda 和流。

因此,例如,我正在尝试将此 while 和 for 循环转换为流,但我没有做对:

List<String> list = new ArrayList<>();
if (!oldList.isEmpty()) {// old is a List<String>
Iterator<String> itr = oldList.iterator();
while (itr.hasNext()) {
String line = (String) itr.next();
for (Map.Entry<String, String> entry : map.entrySet()) {
if (line.startsWith(entry.getKey())) {
String newline = line.replace(entry.getKey(),entry.getValue());
list.add(newline);
}
}
}
}

我想知道是否可以将上面的示例转换为在 for 循环内有 while 循环的单个流。

最佳答案

如上所述,在这里使用流并没有真正增加值(value),因为它使代码更难阅读/理解。我知道你这样做更多是作为一种学习练习。话虽这么说,做这样的事情是一种稍微更函数式的方法,因为它没有从流本身添加到列表的副作用:

list = oldList.stream().flatMap(line->
map.entrySet().stream()
.filter(e->line.startsWith(e.getKey()))
.map(filteredEntry->line.replace(filteredEntry.getKey(),filteredEntry.getValue()))
).collect(Collectors.toList());

关于java - 将循环(while 和 for)转换为流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45821044/

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