我只是在研究函数式编程的基础。我想在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之前)。然后从您的stream
中String[]
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);