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 isPair
来自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));