Java 当每个元素上的操作产生不同的结果计数/持续时间时,保持初始iterable排序顺序稳定
当一个排放物被分解成多个项目后,我无法理解排放物是如何分类的。我有以下代码,请允许我解释一下功能Java 当每个元素上的操作产生不同的结果计数/持续时间时,保持初始iterable排序顺序稳定,java,sorting,observable,rx-java,Java,Sorting,Observable,Rx Java,当一个排放物被分解成多个项目后,我无法理解排放物是如何分类的。我有以下代码,请允许我解释一下功能 数据库中自上而下的内容结构是A1:nB1:nC 在这个返回逻辑中,我们改变了上述内容;A可以在正下方有多个B和/或C(未打包的B) 所有类型都从共享父级Z扩展而来,共享父级Z在覆盖的比较器上使用自定义Comparator实现Comparable,然后根据每种子类的唯一升序int-id进行排序(因此,对于B和C,这将重新启动为0) enrichB基于某种类型的元数据返回单个B或多个C addChil
- 数据库中自上而下的内容结构是
1:nA
1:nB
C
- 在这个返回逻辑中,我们改变了上述内容;
可以在正下方有多个A
和/或B
(未打包的C
)B
- 所有类型都从共享父级
扩展而来,共享父级Z
在覆盖的比较器上使用自定义Z
实现Comparator
,然后根据每种子类的唯一升序int-id进行排序(因此,对于Comparable
和B
,这将重新启动为0)C
- enrichB基于某种类型的元数据返回单个
或多个B
C
- addChildrenToA只是一个生成器(.with)
私有可观察getChildren(最终A){
最终可观测bList=containerService.getBs(a)
.toSortedList();
最终可见因此答案是使用而不是flatMap
private Observable<A> getChildren(final A a) {
final Observable<List<B>> bList = containerService.getBs(a)
.toSortedList();
final Observable<? extends List<? extends Z>> children = bList
.flatMapIterable(items -> items)
.concatMap(b -> enrichB(b))
.toList();
return Observable.zip(
Observable.just(A),
children,
this::addChildrenToA);
}
私有可观察getChildren(最终A){
最终可观测bList=containerService.getBs(a)
.toSortedList();
最终观察到您是否尝试使用concatMap
而不是flatMap
?@BorisSafonov…我在经验不足的情况下错过了该方法,非常感谢!我对您的评论投了赞成票。如果您想将此作为答案发布,欢迎光临,我很乐意接受!
private Observable<A> getChildren(final A a) {
final Observable<List<B>> bList = containerService.getBs(a)
.toSortedList();
final Observable<? extends List<? extends Z>> children = bList
.flatMapIterable(items -> items)
.concatMap(b -> enrichB(b))
.toList();
return Observable.zip(
Observable.just(A),
children,
this::addChildrenToA);
}