gpt4 book ai didi

Java Stream : Flat from Pair to Pair

转载 作者:行者123 更新时间:2023-11-29 07:25:43 25 4
gpt4 key购买 nike

我需要压缩 Pair<Application, FileObject[]> 的流, 到 Pair<Application, FileObject> 的流.

目前,我已经编码了:

List<Application> applications = this.applicationDao.findAll();
applications.stream()
.map(app ->
new Pair<Application, FileObject[]>(
app,
this.massiveInterfaceService.getPendingDocuments(app)
)
);

所以,我需要的是获得 Pair<app, FileObject> 的流.

this.massiveInterfaceService.getPendingDocuments是:

public Stream<FileObject> getPendingDocuments(Application app) { /*...*/ }

有什么想法吗?

最佳答案

假设massiveInterfaceService.getPendingDocuments()返回 FileObject[] ,您可以创建这样的方法:

Stream<Pair<Application, FileObject>> flatten(Pair<Application, FileObject[]> pair) {
return Arrays.stream(pair.getRight())
.map(fileObject -> new Pair.of(pair.getLeft(), fileObject));
}

然后在您的流中使用它:

Stream<Pair<Application, FileObject>> stream =
applications.stream()
.map(app ->
Pair.of(app, this.massiveInterfaceService.getPendingDocuments(app)))
.flatMap(this::flatten);

如果另一方面massiveInterfaceService.getPendingDocuments()返回 Stream<FileObject>

Stream<Pair<Application, FileObject>> stream =
applications.stream()
.flatMap(app ->
this.massiveInterfaceService
.getPendingDocuments(app)))
.map(fileObject -> Pair.of(app, fileObject)));

从你的问题中不清楚哪个是正确的。

关于Java Stream : Flat from Pair<K, Object[]> to Pair<K, Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53395437/

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