使用Java8重构多个或条件

数字

我有一个方案来重构if或java8中的条件

private boolean isStatusAvailable(List<Hierarchy> hierarchyList, String status, int i) {
    return isContainsStatus(hierarchyList.get(i+1), status) || isContainsStatus(hierarchyList.get(i+1), ResultStatus.SUCCESS) || isContainsStatus(hierarchyList.get(i+1), ResultStatus.PEND);
}
private boolean isContains(Hierarchy hierarchy, String status) {
    return hierarchy.getStatus().contains(status);
}
public enum ResultStatus {
    SUCCESS,
    SUCCESS_PENDING,
    SUCCESS_SUMMARY,
    PEND
}

有什么办法可以在java8中重构以上代码?

飞行

总有可能引入如下循环:

private boolean isStatusAvailable(List<Hierarchy> hierarchyList, ResultStatus status, int i) {
  Hierarchy hierarchy = hierarchyList.get(i + 1);
  for (ResultStatus s : Arrays.asList(status, SUCCESS, PEND)) {
    if (isContainsStatus(hierarchy, s)) {
      return true;
    }
  }
  return false;
}

如果要使用Streams,则可以编写:

private boolean isStatusAvailable(List<Hierarchy> hierarchyList, ResultStatus status, int i) {
  Hierarchy hierarchy = hierarchyList.get(i + 1);
  return Stream.of(status, SUCCESS, PEND).anyMatch(s -> isContainsStatus(hierarchy, s));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章