Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当每个元素上的操作产生不同的结果计数/持续时间时,保持初始iterable排序顺序稳定_Java_Sorting_Observable_Rx Java - Fatal编程技术网

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

当一个排放物被分解成多个项目后,我无法理解排放物是如何分类的。我有以下代码,请允许我解释一下功能

  • 数据库中自上而下的内容结构是
    A
    1:n
    B
    1:n
    C
  • 在这个返回逻辑中,我们改变了上述内容;
    A
    可以在正下方有多个
    B
    和/或
    C
    (未打包的
    B
  • 所有类型都从共享父级
    Z
    扩展而来,共享父级
    Z
    在覆盖的比较器上使用自定义
    Comparator
    实现
    Comparable
    ,然后根据每种子类的唯一升序int-id进行排序(因此,对于
    B
    C
    ,这将重新启动为0)
  • 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);
}