Java 8:如何在流中获得大于10的第一个数字?

Rol*_*all 1 java java-8 java-stream

根据主题:如何在流中获得大于10的第一个数字?

stream()在这种情况下,有什么方法可以帮助吗?

我希望一旦流到达10以上的第一个元素,它将返回它而不循环其余元素.(有点"打破"循环)有可能吗?

Rad*_*def 7

你可能正在寻找filterfindFirst:

// new Random().ints() // or whatever the stream is
    .filter(i -> i > 10).findFirst();
Run Code Online (Sandbox Code Playgroud)

findFirst返回某种类型Optional,因此如果找不到匹配项,则需要决定如何处理它.

这类似于这样的循环:

for (int i : ...)
    if (i > 10)     // "filter"
        return i;   // "findFirst" (may or may not be present)
Run Code Online (Sandbox Code Playgroud)

  • 一个`Optional`(或者在这种情况下是一个`IntOptional`)有`.isPresent()`所以你可以使用这个方法 (3认同)