使用 Stream 避免 NoSuchElementExceptionStream、NoSuchElementException

2023-09-07 01:17:59 作者:看清人心

我有以下 Stream:

Stream<T> stream = stream();

T result = stream.filter(t -> {
    double x = getX(t);
    double y = getY(t);
    return (x == tx && y == ty);
}).findFirst().get();

return result;

但是,并不总是有结果给我以下错误:

However, there is not always a result which gives me the following error:

NoSuchElementException:不存在值

NoSuchElementException: No value present

那么如果没有值,我该如何返回 null?

So how can I return a null if there is no value present?

推荐答案

你可以使用Optional.orElse,比检查isPresent简单多了:

T result = stream.filter(t -> {
    double x = getX(t);
    double y = getY(t);
    return (x == tx && y == ty);
}).findFirst().orElse(null);

return result;