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

我可以将一条流拆分为多条较小的流吗

蒋阳华
2023-03-14

除了这个用例,流还有很多问题

我有一个巨大的对象流Stream

Class A { enum status [Running,queued,Completed], String name }

我想拆分

在调用stream时,我面临StackOverflowException。我在这里重复了好几次。

Stream. Concat在JavaDocs"实现说明:从重复连接构造流时要小心。访问深度连接流的元素可能会导致深度调用链,甚至StackOverflow Exception。"

Map<Status, Stream<String>> splitStream = new HashMap<>();
streamA.foreach(aObj -> 
Stream<String> statusBasedStream = splitStream.getOrDefault(aObj.status,Stream.of());
splitStream.put(aObj.status, Stream.concat(statusBasedStream, Stream.of(aObj.name))); 

在github中,可以使用定制流来实现连接的选项很少,但希望使用标准库来解决这个问题。

如果数据较小,则应采用此处所述的列表方法(将流拆分为包含N个元素的子流)


共有1个答案

万俟棋
2023-03-14

这不是问题的精确解决方案,但如果你有关于索引的信息,那么组合流。跳过()流。limit()可以帮上忙——下面是我尝试过的伪代码-

    int queuedNumbers = 100;
    int runningNumbers=200;
    Stream<Object> all = Stream.of();
    Stream<Object> queuedAndCompleted = all.skip(queuedNumbers);
    Stream<Object> queued = all.limit(queuedNumbers);
    Stream<Object> running = queuedAndCompleted.limit(runningNumbers);
    Stream<Object> completed = queuedAndCompleted.skip(runningNumbers);

希望能有所帮助。

 类似资料:
  • 我正在努力做到以下几点。。。。 我有以下模式的字符串列表: 此刻我正在逐行阅读并输出一条流。。。 这样地: 这将返回一个流。 我知道我可以把它们收集到一个列表中,但是我想知道在这个流中我是否可以分裂并做更多的逻辑? 我尝试分割每一行并过滤,以防三个预期字段中的任何一个为空,这可能吗? 目前我有这样的“旧方式”: 有什么想法吗?

  • 这可能吗(伪Java): 更笼统地说,在流上是否有一个操作可以增加流中的元素数量(而不是像那样减少元素数量)?

  • 我有一个通用的Streams API问题,我想“高效地”解决。假设我有一个(可能非常大,可能无限)流。我想以某种方式对其进行预处理,例如,过滤掉一些项目,并对一些项目进行变异。让我们假设这个预处理是复杂的,时间和计算密集型的,所以我不想做两次。 接下来,我想对项序列执行两组不同的操作,并使用不同的流类型构造处理每个不同序列的远端。对于无限流,这将是一个forEach,对于有限流,它可能是一个收集器

  • 问题内容: 我有一个由Java 8流表示的数据集: 我可以看到如何对其进行过滤以获取随机子集-例如 我还可以看到如何减少该流,例如得到两个表示数据集的两个随机一半的列表,然后将它们转换回流。但是,是否有直接方法可以从最初的一个生成两个流?就像是 感谢您的任何见解。 问题答案: 不完全是。您不可能一分之二。这没有道理-您将如何遍历一个而不需要同时生成另一个?流只能操作一次。 但是,如果要将它们转储到

  • 如何使用流将Java列表拆分为Java大小为的较小列表? 在JavaScript中,我会使用函数并执行如下操作: 我试图用Java流来实现这一点,但我似乎不知道如何让它允许我使用数组列表

  • 我有一个具体的问题。也有一些类似的问题,但这些问题要么与Python有关,而不是与Java有关,要么即使问题听起来类似,需求也不同。 我有一份价值观清单。 最后,我想根据列表的值对列表进行拆分。我的意思是,如果值大于零,它将保留在原始列表中,负值列表中的相应索引将设置为零。如果该值小于零,它将转到负值列表,原始列表中的负值将替换为零。 结果列表应该是这样的; 有没有办法解决这个流api在Java?