Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用lambda-java8进行代码重构_Java_Lambda_Java 8 - Fatal编程技术网

使用lambda-java8进行代码重构

使用lambda-java8进行代码重构,java,lambda,java-8,Java,Lambda,Java 8,我只是在研究函数式编程的基础知识。我想用Java中的lambda转换下面的代码。我正在使用Java8。任何帮助都将不胜感激 谢谢 String reinBranches = (String) application.getAttribute("xx_xx_xx"); if(reinBranches != null && reinBranches.length() > 0) { String reinBranchArray[]

我只是在研究函数式编程的基础知识。我想用Java中的lambda转换下面的代码。我正在使用Java8。任何帮助都将不胜感激

谢谢

        String reinBranches = (String) application.getAttribute("xx_xx_xx");

    if(reinBranches != null && reinBranches.length() > 0)
    {
        String reinBranchArray[] = reinBranches.split(",");
        for(int i = 0; i < reinBranchArray.length; i++)
        {
            if(reinBranchArray[i].equals((String) session.getAttribute("xyz_xyz_xyz"))) {
                return true;
            }
        }
    }
    return false;
魔力

魔力


首先,我将获得您想要匹配的属性,并在lambda之前保存它。然后从拆分中流式处理字符串[],如果有符合条件的字符串,则返回true。最后,使用逻辑and防止返回时出现NPE。像

或者如使用Pattern.splitAsStream的注释中所建议的那样,如果找到匹配项,则可能会短路,而无需通过拆分构建阵列

return reinBranches != null && Pattern.compile(",").splitAsStream(reinBranches).anyMatch(xyz3::equals);

首先,我将获得您想要匹配的属性,并在lambda之前保存它。然后从拆分中流式处理字符串[],如果有符合条件的字符串,则返回true。最后,使用逻辑and防止返回时出现NPE。像

或者如使用Pattern.splitAsStream的注释中所建议的那样,如果找到匹配项,则可能会短路,而无需通过拆分构建阵列

return reinBranches != null && Pattern.compile(",").splitAsStream(reinBranches).anyMatch(xyz3::equals);

这只是另一种不需要任何使用流开销的方法:-

String reinBranches = (String) application.getAttribute("xx_xx_xx");
String xyz3 = (String) session.getAttribute("xyz_xyz_xyz");

return reinBranches != null && Pattern.compile(xyz3).matcher(reinBranches).find(0);

这只是另一种不需要任何使用流开销的方法:-

String reinBranches = (String) application.getAttribute("xx_xx_xx");
String xyz3 = (String) session.getAttribute("xyz_xyz_xyz");

return reinBranches != null && Pattern.compile(xyz3).matcher(reinBranches).find(0);

使用lambda的第一条规则是:您的目标接口是函数接口吗?您的意思是要将实现转换为具有流的实现吗?@AniketSahrawat:关键是我只是函数编程的新手。我正处于尝试转换代码的阶段。我只是想知道我是否能把这个小东西转换成lamda。@daniu是的,没错!为什么要投反对票??使用lambda的第一条规则是:你的目标接口是函数接口吗?你的意思是你想把实现转换成一个带有流的实现吗?@AniketSahrawat:关键是我只是函数编程的新手。我正处于尝试转换代码的阶段。我只是想知道我是否能把这个小东西转换成lamda。@daniu是的,没错!为什么投反对票??Pattern.compile、.splitAsStreamreinBranches.anyMatchs->s.equalsession.getAttributexyz\u xyz\u xyz;在复合表达式中永远不需要布尔文字。在此特定情况下,简化表达式为ReinBranchs!=null&&Arrays.streamReinBranchs.split、.anyMatchattr::equals。另一个值得考虑的选择是取消拆分操作:ReinBranchs!=null&&reinbranchs.matches.*,+Pattern.quotexyz3+,*@霍尔格非常好。我显然需要更多的咖啡。继续!Pattern.splitAsStream的优点是不预先生成所有子字符串的数组。由于anyMatch是短路,因此与String.split+Arrays.stream相比,这可以真正减少工作量。另一方面,String.split为单字符分隔符提供了一个优化的代码路径,它可能会在中小型字符串中获胜…Pattern.compile、.splitAsStreamreinBranches.anyMatchs->s.equalsession.getAttributexyz_xyz_xyz;在复合表达式中永远不需要布尔文字。在此特定情况下,简化表达式为ReinBranchs!=null&&Arrays.streamReinBranchs.split、.anyMatchattr::equals。另一个值得考虑的选择是取消拆分操作:ReinBranchs!=null&&reinbranchs.matches.*,+Pattern.quotexyz3+,*@霍尔格非常好。我显然需要更多的咖啡。继续!Pattern.splitAsStream的优点是不预先生成所有子字符串的数组。由于anyMatch是短路,因此与String.split+Arrays.stream相比,这可以真正减少工作量。另一方面,String.split为单字符分隔符提供了一个优化的代码路径,它很可能在中小型字符串中获胜…@Holger另外,它是社区wiki,因此您可以编辑它it@Holger而且,它是社区维基,所以你可以编辑它