【发布时间】:2016-03-31 18:04:39
【问题描述】:
我需要根据一大堆过滤器运行两个不同的任务
我刚刚掌握了 Lambda 的概念,所以我想我的问题是,您如何在 Lambda 中处理包含复杂逻辑的多个“else”条件?
我知道我可以使用过滤器和映射来选择某些数据。 “嵌套”如何与过滤器一起使用?
我可以这样做吗:
//Iterate over list of sites
sites.stream()
//Check if current site is active
.map(isActive ?
//{Do something with site because site is active};
//Set a variable for later user maybe?
:
//{Do something else involving the current site because it's not?};
//Set a different variable maybe?
);
//use variable from first map?
当我运行这些让我很困惑的抽象过程时,有人可以为我提供一些正确的语法,或许还可以对我正在对我的数据做什么的基本解释。
其次,如果我想并行运行这两个地图进程,我会这样做吗?
sites.stream().parallel()?
像往常一样,感谢您帮助我的无知!
【问题讨论】:
-
我认为你最好坚持使用传统编程来完成这些类型的任务。
-
所以我很清楚......如果我有两个简单的程序路径,如果为真,则执行任务 1,如果为假,则执行任务 2,lambdas 不是真正的方法吗?跨度>
-
也许你应该在你的站点对象中加入更多的逻辑,让他们决定做什么,见Tell-Don't-Ask principle。这样你就可以简单地从外部调用
sites.forEach(Site::doSomething)并将逻辑放在Site类中。
标签: java if-statement lambda parallel-processing java-8