【发布时间】:2015-07-24 11:43:43
【问题描述】:
我正在尝试将以下简单代码转换为功能样式
for(String str: list){
if(someCondition(str)){
list2.add(doSomeThing(str));
}
else{
list2.add(doSomethingElse(str));
}
}
用流替换这个循环很容易吗?我看到的唯一选择是使用两种不同的过滤条件对流进行两次迭代。
【问题讨论】:
-
如果您的代码正常工作,您为什么要这样做?
-
您可以使用带有条件语句
List<String> list2 = list.stream().map(str -> someCondition(str) ? doSomeThing(str) : doSomethingElse(str)).collect(toList());的地图。它是否更具可读性取决于读者(我个人觉得很清楚)。如果需要,您可以随时将此过程提取到辅助方法中。 -
@fge 只是为了更好地理解 Java 中的函数式编程:)
标签: java functional-programming java-8