当前位置: 首页 > 知识库问答 >
问题:

一次从流中选择2个元素[重复]

夹谷鸿福
2023-03-14

假设我们有一个集合(或流?)

{"1","2","3","4"...}

现在我们想取两个元素并组成一对这样的一对

{{"1","2"}, {"2","3"},{"3","4"}..}

我们知道如何以丑陋的方式(for loop)做到这一点。

我想知道我们如何用 java 8 流做到这一点?

因为java流和反应式扩展中的方法几乎相同(两者都是单子),我认为可能有类似于RX的东西。选择(2)将在2个元素到达时触发事件…

共有2个答案

彭涵衍
2023-03-14

可以使用<code>IntStream。range</code>以流的方式循环。

String[] str = {"1", "2", "3", "4"};
final String[][] result = IntStream.range(0, str.length - 1)
        .mapToObj(i -> new String[]{str[i], str[i + 1]})
        .toArray(String[][]::new);

结果包含 {{“1”, “2”}, {“2”, “3”}, {“3”, “4”}}

薛滨海
2023-03-14

它也不漂亮,但你可以用收藏家来做。我使用了一个内部带有数组的 ArrayList,但如果需要,您可以使用不同的中间集合类型。

我在这里做的是一个收集器,它将每一项作为第二项添加到添加到累加器的最后一个数组中,并作为第一项添加到将要添加到累加器的新数组中。

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);

ArrayList<Integer[]> pairs =
    stream.collect(
        () -> new ArrayList<>(), 
        (acc, next) -> {
            if(acc.isEmpty()) {
                acc.add(new Integer[] {next, null});
            } else {
                acc.get(acc.size() - 1)[1] = next;
                acc.add(new Integer[] {next, null});
            }
        },
        ArrayList::addAll
    );

pairs.forEach(a -> System.out.println(a[0] + ", " + a[1]));

//-> 1, 2
//-> 2, 3
//-> 3, 4
//-> 4, 5
//-> 5, 6
//-> 6, null
 类似资料:
  • 问题内容: 嘿,我在PostgreSql中有2个表: 和一些数据: 文件: 更新: 因此,所有更新都指向同一文档,但是所有更新的日期都不同。 我想做的是从文档表中进行选择,但还要包括基于日期的最新更新。 这样的查询应如何显示?这是我目前拥有的,但我列出的是所有更新,而不是我需要的最新更新: 包括; 我在查询中需要这个的原因是我想按更新模板中的日期排序! 编辑:此脚本已大大简化,因此我应该能够创建一

  • 问题内容: 假设我有一个数组,我想随机选择一个元素。 最简单的方法是什么? 明显的方法是。但是也许有红宝石之类的东西?或者如果不能通过扩展创建这种方法? 问题答案: Swift 4.2及更高版本 推荐的新方法是Collection协议的内置方法:。它返回一个可选参数以避免我以前假设的空情况。 如果不创建数组并且不能保证count> 0,则应执行以下操作: Swift 4.1及以下 只是为了回答您的

  • 假设我有一个数组,我想随机选择一个元素。 最简单的方法是什么? 最明显的方法是数组[随机索引]。但可能有类似ruby的数组。示例 ?或者,如果不是,那么可以使用扩展创建这样的方法吗?

  • 问题内容: 如何从集合中选择随机元素?我对从Java中的HashSet或LinkedHashSet中选择随机元素特别感兴趣。也欢迎使用其他语言的解决方案。 问题答案:

  • 问题内容: 请问我的英语水平。我有2个表,两个表都按日期间隔分区,但是在不同的字段上。两个表中都有大量记录(每个分区中约100kk)。第一个表在快速discks表空间中保留3个最后(按日期)分区,其他表在慢速discks表空间中保持。我也有一些系统来处理数据。它并行执行进程,每个进程都通过select语句从第一个表中获取数据,并将处理后的数据放入第二个表中。因此,我只需要从“快速”(!)分区的第一

  • 每次运行代码时,我都需要从下面的示例json中选择任意随机值。我在空手道中怎样才能做到这一点呢?我需要得到任何随机值,并在另一个功能文件中使用。