当前位置: 首页 > 面试题库 >

分组值序列

司空炯
2023-03-14
问题内容

我想知道是否有任何巧妙的方法可以使用新的Stream API将值序列“分组”。

例如,将一系列整数分成整数组,其中每个组都是一个升序的数字序列:

IntStream seq = IntStream.of(1, 2, 3, -1, -1, 1, 2, 1, 2);
IntFunction next = i -> i + 1;

// DESIRED OUTPUT: [[1,2,3], [-1], [-1], [1,2], [1,2]]

问题答案:

不幸的是,Stream API并不是非常适合解决涉及Stream元素的依赖操作的问题,例如此元素。

但是,您可以为此使用StreamEx库:

public static void main(String[] args) {
    IntStream seq = IntStream.of(1, 2, 3, -1, -1, 1, 2, 1, 2);
    IntUnaryOperator next = i -> i + 1;

    List<List<Integer>> result = 
        IntStreamEx.of(seq).boxed().groupRuns((i1, i2) -> next.applyAsInt(i1) == i2).toList();

    System.out.println(result); // prints "[[1, 2, 3], [-1], [-1], [1, 2], [1, 2]]"
}

这将分组为List所有连续的整数,其中第二个等于next应用于第一个的函数。最后,将此流收集到中List



 类似资料:
  • 问题内容: 假设我有一个这样的列表: 我如何最优雅地将其分组以在Python中获得此列表输出: 因此,这些值按次值分组,但顺序保留下来。 问题答案:

  • 问题内容: 我有一张表格,试图从中检索每种证券的最新头寸: 桌子: 我查询创建表: 我一直在弄乱基于此页面的查询版本,但似乎无法获得想要的结果。 这是我一直在尝试的方法: 但这只是返回我: 我正在尝试获取每个证券的最大/最新购买日期,因此结果将为每个证券具有最新购买日期的一行。任何帮助是极大的赞赏。 编辑:头寸的ID必须与最大购买日期一起返回。 问题答案: 您可以使用此查询。您可以节省75%的时间

  • 有没有非终端版本的或其他一些简洁的方式来流式传输生成的Map条目/值? 我发现自己想在分组后流过值但我能想到的最好的方法并不漂亮:

  • 本文向大家介绍JavaScript数值数组排序示例分享,包括了JavaScript数值数组排序示例分享的使用技巧和注意事项,需要的朋友参考一下 但是,我们在使用中就会发现问题,这里的数组排序方法并不是按照我们想像中的数字大小来排序的,而是按照字符串测试结果改变原先的数据。这并不是我们想要的。 那么如何才可以得到我们想要的按照我们思维中的数字大小来排序呢。我们可以自己编写一个函数来实现。

  • 问题内容: 给定这样的假设查询: 并有一个类似于下面的表格: 所需结果: 有什么方法可以使用GROUP BY和LIKE语句(LIKE“ silver”,LIKE“ gold”,LIKE“ platinum”等)对这些条目进行分组? 问题答案: 您可以使用: 某些数据库允许您在中使用列别名。

  • 问题内容: 我认为两者是相同的。 但是结果是不同的。 为什么结果不同?(为什么第二个结果呢?) 问题答案: 先决条件 -2个重点 列表是可变的 列表的主要部分是列表是可变的。这意味着可以更改列表的值。这就是您遇到麻烦的原因之一。请参阅文档以获取更多信息 评估顺序 另一部分是,在拆开元组的包装时,评估从左到右开始。请参阅文档以获取更多信息 介绍 当您执行和的值时,将首先存储它们。然后从左侧开始,将的