Java流:从对到平<;K、 对象[]>;配对<;K、 对象>;

Java流:从对到平<;K、 对象[]>;配对<;K、 对象>;,java,java-stream,apache-commons,Java,Java Stream,Apache Commons,我需要将Pair流平坦化为Pair流 目前,我已经编写了以下代码: List<Application> applications = this.applicationDao.findAll(); applications.stream() .map(app -> new Pair<Application, FileObject[]>( app, this.massiveInterfaceSer

我需要将
Pair
流平坦化为
Pair

目前,我已经编写了以下代码:

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

有什么想法吗?

假设
massiveInterfaceService.getPendingDocuments()
返回
文件对象[]
,您可以创建如下方法:

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

您的问题不清楚哪个是正确的。

假设
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));
}

您的问题不清楚哪一个是正确的。

您可以简单地调用
flatMap
,从
getPendingDocuments
的结果中创建一个流。这是因为
getPendingDocuments
已经返回了一个流

applications.stream()
   .flatMap(app -> this.massiveInterfaceService
                    .getPendingDocuments(app)
                    .map(doc -> Pair.of(app, doc));

您只需调用
flatMap
,从
getPendingDocuments
的结果中创建一个流。这是因为
getPendingDocuments
已经返回了一个流

applications.stream()
   .flatMap(app -> this.massiveInterfaceService
                    .getPendingDocuments(app)
                    .map(doc -> Pair.of(app, doc));

Pair
从何而来?从
org.apache.commons.lang3.tuple
可以用该构造实例化
org.apache.commons.lang3.tuple.Pair
吗?@nullpointer是正确的,可能需要使用静态方法
Pair.of()
问题中另一个让人困惑的部分是
PairWhere is
Pair
来自
org.apache.commons.lang3.tuple
可以用该构造实例化
org.apache.commons.lang3.tuple.Pair
吗?@nullpointer是正确的,可能需要使用静态方法
Pair.of()
问题中另一个令人困惑的部分是
对问题中令人困惑的部分是
对问题中令人困惑的部分是
applications.stream()
   .flatMap(app -> this.massiveInterfaceService
                    .getPendingDocuments(app)
                    .map(doc -> Pair.of(app, doc));