我想一个拆分Stream
成Stream
的Streams
基础上的内容Streams
。结果将Stream
包含原始流数据的一部分。
我的实际应用程序更加复杂(将时间间隔列表中的日志行分组),但是我的问题是如何处理流,因此在这里我问一个简化的示例。
我希望能够基于重复的相同数字将a拆分Stream<Integer>
为一个Stream<Stream<Integer>>
,而仅将流保留为奇数。
例如,以下流包含:
{1,1,1,2,2,2,3,6,7,7,1,1}
需要产生包含以下内容的流:
{{1,1,1},{3},{7,7},{1,1}}
通过使用过滤器开始(或结束),可以省去偶数:
Stream<Integer> input = ...;
Straem<Stream<Integer>> output = input.filter(this::isOdd).someOtherOperation();
这是不希望的,因为这意味着对每个输入值进行两次评估,这是可以接受的,但我希望避免这种情况。
我当前的解决方案是对流的内容进行迭代,并创建一个List<List<Integer>>
并将其转换为Stream<Stream<Integer>>
。但是,这意味着完整的结果将保留在内存中(这对于我的应用程序来说是不希望的)。
我还认为我可以编写自己的Iterator
内容(从流中读取)来实现这一点,但是我不确定这将如何工作。
我如何基于原始内容将a Stream
转换为Stream
of
,而又不将完整结果存储为first。Streams``Stream``List``Lists
您可能想要实现自己的聚合拆分器来执行此操作。在质子包装库中已经有类似的东西(第一个链接重定向到在质子包装中实现的链接)。
请注意,您将获得一个Stream<List<Integer>>
(您可以尝试将实现修改为Stream<Stream<Integer>>
直接具有一个,但是您始终需要缓冲少量元素;具体取决于窗口的大小;以测试是否应创建一个新窗口)。因此,例如:
StreamUtils.aggregate(Stream.of(1, 1, 1, 2, 2, 2, 3, 6, 7, 7, 1, 1),
Objects::equals)
.forEach(System.out::println);
输出:
[1, 1, 1]
[2, 2, 2]
[3]
[6]
[7, 7]
[1, 1]
我想根据的内容将单个拆分为的。生成的应该包含原始流数据的一部分。 我的实际应用程序更复杂(它是对时间间隔列表中的日志行进行分组),但我的问题是如何处理流,因此这里我询问一个简化的示例。 我希望能够拆分
问题内容: 如果可能,我想通过管道将两个Node.js流合并为一个。我正在使用转换流。 换句话说,我希望我的图书馆归还给人们使用。例如,他们可以写: 在内部,我使用的是第三方,它可以完成一些工作,并插入包含在我自己的逻辑中。因此,以上内容将转换为: 我可以那样做吗?我已经尝试过了,但这显然行不通。 为了与进行类比,假设我想编写一个程序来检查某个流()的最后一行中是否存在该字母,我可以创建一个she
问题内容: 我在存储过程中的MS- SQL中有一个结果集,可以说它有一个VARCHAR列,但有很多行。我想创建一个包含所有这些值的逗号分隔的字符串,是否有一种简单的方法来执行此操作,还是我必须逐步检查每个结果并手动构建字符串? 最好是我想在存储过程本身中执行此操作。 问题答案: 这是一种方法(使用AdventureWorks2008 DB): 这是另一个(从SQL 2005开始): 在这两种情况下
问题内容: 我有一些基于NDK的C 代码,需要构建一个android位图对象。我敢肯定有一种方法可以直接从C 代码执行此操作,但这并不是最简单的事情;) 所以我想调用的方法是 因此,要从本机代码执行此操作,我需要执行以下步骤。 找到类(android.graphics.Bitmap)。 获取“ createBitmap”的静态方法ID。 创建枚举。 调用静态方法。 (最终,我将需要创建一个jint
我有一个学生名单a和学生名单B。 学生对象包含如下字段:否、年龄、城市、出生日期、工资 我的列表A包含这些对象 我的列表B包含这些对象 我想做的是提取ListA有但listB没有的学生对象,以及ListA和listB有但薪水不同的学生对象(如否、年龄、城市)。我还想写工资差异。 我想在java 8中使用流api。首先,我想将students对象提取到列表中,但我现在可以提取常见的student对象
从一个char数组,我想构造一个流来使用Java8特性,如过滤器和映射。 第一种方法不起作用(原因:将cStream更改为)。注释行也不起作用(原因:类型数组中的方法不适用于参数())。 我知道,如果将更改为,那么使用就可以正常工作。但我不想每次都将每个转换为或在需要对数组使用流库时将其转换为列表。