gpt4 book ai didi

rx-java - 将分组的可观测值的排放收集到一个列表中

转载 作者:行者123 更新时间:2023-12-04 00:44:05 25 4
gpt4 key购买 nike

我有以下用例(这当然是一个人为的例子,但是一旦我知道答案,我将能够将其移植到我要解决的实际问题中):

  • 获取整数列表。
  • 按 % 4 操作的结果对它们进行分组
  • 收集每个组的元素到列表
  • 忽略元素少于 3 个元素的任何组/列表
  • 发出单个列表,其元素是步骤 #3 中创建的列表

  • 这是我当前的代码:

        Observable
    .from(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12))
    .groupBy(item -> item % 4)
    .subscribe(groupedObservable -> {
    groupedObservable
    .toList()
    .filter(list -> list.size() > 2)
    .subscribe(result -> {
    System.out.printf("%d results %s%n", result.size(), result);
    });
    });

    它的输出是:
    4 results [0, 4, 8, 12]
    3 results [2, 6, 10]
    3 results [3, 7, 11]

    所以它打印出每个组有多少个元素,然后是元素列表。我希望输出是(我实际上并不关心键):

    3 个结果:[[0, 4, 8, 12], [2, 6, 10], [3, 7, 11]]

    即以某种方式将分组的 observable 展平为一个列表。我没有这样做。例如,添加 .flatMap(integers -> Observable.just(integers))filter不会改变任何东西,因为它只影响每个分组的 observable,而不是整个流。有没有办法满足我的要求?

    最佳答案

    我不确定我是否理解正确,但根据所需的输出,这里是您可能正在寻找的代码:

    public static void main(final String[] args) throws Exception {
    Observable.from(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12))
    .groupBy(item -> item % 4)
    .flatMap(Observable::toList)
    .filter(integers -> integers.size() > 2)
    .toList()
    .subscribe(result -> {
    System.out.printf("%d results %s%n", result.size(), result);
    });
    }

    关于rx-java - 将分组的可观测值的排放收集到一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30831044/

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