Java 8 语法迭代并调用基于所有元素的否定谓词的方法?

标签 java java-8 java-stream

这是我在 Java 7 中所做的:

public class Sample {

    private List<String> list = Lists.newArrayList("helloworld", "foobar", "newyork");

    public void performOperation(String input) {

        boolean found = false;

        for (String each : list) {
            if (input.contains(each)) {
                found = true;
            }
        }

        if (!found) {
            magicMethod(input);
        }
    }

    public void magicMethod(String input) {
        // do the real magic here
    }
}

我希望沿着这条线走下去(由于显而易见的原因这是错误的)

list.forEach(each -> input.contains(each) ? magicMethod(input) : return );

最佳答案

使用 anyMatchnoneMatch,以在您的特定情况下更清楚的为准:

if (list.stream().noneMatch(input::contains)) {
   magicMethod(input);
}

关于Java 8 语法迭代并调用基于所有元素的否定谓词的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705510/

相关文章:

java - 如何在节点Firebase中获得唯一的随机产品?

java - Jboss 5CR2 支持 EJB2

java - Jboss 4.0.2 上的 JMS 主题

java - JTable Swing : I cannot resize column by dragging cursor in header

java - java.util.concurrent.CompletableFuture#allOf 的目的是什么?

java - 用Java打开一个文件夹中的多个 'txt '

java - 依赖前一个和下一个元素的流处理

java - 是否可以使用 Java 8 运行我的数据流管道代码?

java - 使用 Spring MVC 流式传输可关闭资源

java - 如何在Java 8中访问流的元素,或返回流的一个元素?