当前位置: 首页 > 知识库问答 >
问题:

如何使用java8流创建与以下逻辑等价的东西?

伍嘉
2023-03-14

我希望使用Java8流创建一个与以下方法等效的方法,但无法做到这一点。有人能带我来吗?

public boolean checkCondition(List<String> ruleValues, List<String> inputValues) {
    boolean matchFound = false;
    for (String ruleValue : ruleValues) {
        for (String inputValue : inputValues) {
            if (ruleValue.equalsIgnoreCase(inputValue)) {
                matchFound = true;
                break;
            }
        }
    }
    return matchFound;
}

共有2个答案

诸葛品
2023-03-14

等效Java 8代码:

    public boolean checkCondition(final List<String> ruleValues, final List<String> inputValues) {

        final Predicate<String> checkRuleValue = ruleValue -> inputValues
            .stream()
            .anyMatch(ruleValue::equalsIgnoreCase);

        return ruleValues
            .stream()
            .anyMatch(checkRuleValue);
    }
司徒捷
2023-03-14

试试这个方法。它将在O(n)时间内运行:

public boolean checkCondition(List<String> ruleValues, List<String> inputValues) {
    Set<String> rules = ruleValues.stream()
                                  .map(String::toLowerCase)
                                  .collect(toSet());

    return inputValues.stream()
                      .map(String::toLowerCase)
                      .anyMatch(rules::contains);
}
 类似资料:
  • 我想写这样的东西: 测试模型是否具有来自控制器方法中@Valid注释的 BindingResult 错误,或者我自己的错误之一已添加到页面中。这可能吗? 我想类似于hamcrest的< code>anyOf()可能是我想要的,但是我不能让它工作。

  • Navicat Data Modeler 让你创建逻辑模型,包括实体、属性和关系。 若要创建一个逻辑模型,从菜单栏选择“文件”->“新建”。在“新建模型”窗口中,选择“模型类型”为“逻辑”。 你也可以使用下列的功能来创建一个逻辑模型: 从数据库导入 - 从现有的数据库/模式或 ODBC 数据源逆向工程。 模型转换 - 从一个物理或概念模型转换。

  • Navicat Data Modeler 让你创建逻辑模型,包括实体、属性和关系。 若要创建一个逻辑模型,从菜单栏选择“文件”->“新建模型”。在“新建模型”窗口中,选择“模型类型”为“逻辑”。 你也可以使用下列的功能来创建一个逻辑模型: 从数据库导入 - 从现有的数据库/模式或 ODBC 数据源逆向工程。 模型转换 - 从一个物理或概念模型转换。

  • Navicat Premium 让你创建逻辑模型,包括实体、属性和关系。 在“新建模型”窗口中,选择“模型类型”为“逻辑”。

  • Navicat Premium 让你创建逻辑模型,包括实体、属性和关系。 在“新建模型”窗口中,选择“模型类型”为“逻辑”。