IntPredicate Lambda Java8

时间:2017-06-08 05:45:59

标签: lambda filter java-8 predicate

以下方法的功能是尝试通过添加两个数字的倍数来遍历列表从3到999,其中multiplosDe.get(0)可以是4而multiplosDe.get(1)可以是7。

如果我只发送带有两个Integer对象的列表,则此函数有效。我想要的是能够发送n个对象的列表,而不必将|| multiplosDe.get(2)添加到谓词。

public long sumaDeMultiplos(List<Integer> multiplosDe) {
    int suma = 0;
    IntPredicate predicate  = s -> (s%multiplosDe.get(0)==0 || s%multiplosDe.get(1)==0);

        suma = IntStream.range(3, 1000).filter(predicate).sum();

    return suma;
}

1 个答案:

答案 0 :(得分:3)

IntPredicate predicate  = s -> multiplosDe.stream().anyMatch(i -> s % i == 0);