我只是在研究函数式编程的基础。我想在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之前)。然后从您的streamString[] split,如果您的标准是true,则返回anyMatch。最后,使用逻辑和防止return上的NPE。喜欢,

String reinBranches = (String) application.getAttribute("xx_xx_xx");
String xyz3 = (String) session.getAttribute("xyz_xyz_xyz");
return reinBranches != null && Arrays.stream(reinBranches.split(",")).anyMatch(xyz3::equals);


或如使用Pattern.splitAsStream的注释中所建议的那样,如果找到匹配项而不会从分裂中建立数组,则可以短路

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

10-04 20:30