使用If条件遍历ArrayList并使用流api返回布尔值标志

时间:2018-08-23 13:26:25

标签: java java-8

我正在尝试使自己更熟悉Java 8 Stream API。 目前,我想翻译类似流的内容,但似乎我还不太满意,因为我不知道该怎么做。

boolean isTrue = false;

for (Integer integer : intList) {
    if (integer > 10) {
        isTrue = true;
        break;
    }
}

2 个答案:

答案 0 :(得分:10)

您所关心的是,列表中至少有一个输入大于10,因此anyMatch

boolean isTrue = intList.stream()
                        .anyMatch(x -> x > 10);

答案 1 :(得分:3)

  • 您迭代一个整数列表。因此,请使用Collection.stream()

  • 您比较数值。因此,使用Stream.mapToInt()来处理int而不是Integer会更有效。在这里它并不会改变很多事情,但是如果您将流更改为执行其他一些数值运算,则您已经使用了正确的方法。

  • ,只要满足条件,便会对布尔值(结果)进行评估。否则我认为是错误的。因此,请使用Stream.anyMatch(Predicate)

所以这对应于:

boolean result =
intList.stream()
       .mapToInt(i-> i)
       .anyMatch(i-> i > 10);