gpt4 book ai didi

Java 流 : Optional to stream

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:50 27 4
gpt4 key购买 nike

这是我的代码:

Optional<Application> application = this.applicationDao.findById(id);

其中,Application类是:

public class Application {
private String code;
private Collection<ApplicationQuote> quotes;
}

我需要从返回 Optional<Application> 创建一个流像这样:

(app, quote-1) > (app, quote-2) > ... > (app, quote-n)

其中每个 quote-n在里面返回 Optional<Application>.quotes .

我希望我解释得很好。

到目前为止,我已经能够编写这段代码,但我对此感到不舒服:

Optional<Application> application = this.applicationDao.findById(id);
application.map(app -> Pair.of(app, Optional.ofNullable(app.getQuotes())))
.filter(quote -> quote.getValue().isPresent())
.map(quote -> quote.getValue().get().stream().map(q -> Pair.of(quote.getKey(), q)));

最佳答案

你把这里的事情复杂化了。即你实际上不需要包装 app.quotes进入一个可选的只是为了检查它是否是非空的(这实际上滥用了可选的主要目的)等......

因为你想要一个 Stream<Pair<Application, ApplicationQuote>>你可以这样做:

JDK8:

application.filter(app -> app.getQuotes() != null)
.map(Stream::of).orElseGet(Stream::empty)
.flatMap(app -> app.getQuotes().stream().map(quote -> Pair.of(app, quote)));

JDK9:

application.filter(app -> app.getQuotes() != null).stream()
.flatMap(app -> app.getQuotes().stream().map(quote -> Pair.of(app, quote)));

关于Java 流 : Optional to stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53871591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com