Java 8 Lambda 处理 > if > else

标签 java if-statement lambda parallel-processing java-8

我需要基于一大堆过滤器运行两个不同的任务

我刚刚掌握 Lambda 的概念,所以我想我的问题是,如何在 Lambda 中处理多个包含复杂逻辑的“其他”条件?

我知道我可以使用 filter 和 map 来选择某些数据。 “嵌套”如何与过滤器一起使用?

我可以这样做吗:

//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?

当我运行这些让我感到迷惑的抽象过程时,有人能为我提供一些正确的语法以及我对数据所做的基本解释吗?

其次,如果我想并行运行这两个 map 进程,我会这样做吗?

sites.stream().parallel()?

像往常一样,感谢您帮助我克服无知!

最佳答案

lambda 用法的一些示例:

您可以按 Activity 和非 Activity 对您的网站进行分组,之后您可以对两者执行一些逻辑。将大逻辑放入方法中,然后调用 map() 函数。

您也可以使用 filter() 来只获取流的一部分。

public class Lambda {

    static class Site {

        public boolean isActive;
        public boolean otherCondition;
        public boolean isActive() {
            return isActive;
        }

        public boolean isOtherCondition() {
            return otherCondition;
        }

        public void setProperty(String property) {

        }
    }
    public static Site someOperation(Site site) {

        //some code

        return site;
    }
    public static void main(String[] args) {

        ArrayList<Site> sites = new ArrayList<>();

        Map<Boolean, List<Site>> groupedSites = sites.stream().collect(Collectors.groupingBy(Site::isActive));          
        groupedSites.get(Boolean.TRUE).stream().filter(Site::isOtherCondition).map(Lambda::someOperation).forEach(p -> p.setProperty("something"));

    }
}

关于Java 8 Lambda 处理 > if > else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36340556/

相关文章:

java - 为什么使用 JUnit 测试套件?

java - Rest API curl 命令不返回值(java Spring)

Java人脸检测库

java - if/else 不起作用并表示 else 需要 if

SQL 查询 select * if <this> 但不是 if <condition>

jquery if/else语句在iframe、css、style元素之间切换

C++ 11 lambda作为成员变量?

java - 在 Java 中通过 GridLauncherV3 启动 Selenium Grid

c# - 如何用 lambda 表达式连接 3 个表?

c# - 单元测试错误 : This function can only be invoked from LINQ to Entities