gpt4 book ai didi

java - 用 Java-8 Streams 替换 'for' 循环中的 if-else

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

我尝试将以下简单代码转换为函数式样式

for(String str: list){
if(someCondition(str)){
list2.add(doSomeThing(str));
}
else{
list2.add(doSomethingElse(str));
}
}

是否可以轻松地将此循环替换为流?我看到的唯一选择是使用两个不同的过滤条件对流进行两次迭代。

最佳答案

听起来你可以在条件下使用 map:

List<String> list2 = list
.stream()
.map(str -> someCondition(str) ? doSomething(str) : doSomethingElse(str))
.collect(Collectors.toList());

简短但完整的示例,将短字符串映射为小写,将长字符串映射为大写:

import java.util.*;
import java.util.stream.*;

public class Test {

public static void main(String[] args) {
List<String> list = Arrays.asList("abC", "Long Mixed", "SHORT");
List<String> list2 = list
.stream()
.map(str -> str.length() > 5 ? str.toUpperCase() : str.toLowerCase())
.collect(Collectors.toList());
for (String result : list2) {
System.out.println(result); // abc, LONG MIXED, short
}
}
}

关于java - 用 Java-8 Streams 替换 'for' 循环中的 if-else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609716/

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