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

收集时的流非法异常

太叔何平
2023-03-14
public void execute(Stream<Trade> trade, Stream<Order> order){

  order.filter(o -> trade.anyMatch(t -> t.getInstrumentId() == 
   o.getInstrumentId() && t.getGroupid() == o.getGroupId()))
   .collect(Collectors.toList());// Illegal exception only when i include this line

}

共有1个答案

慕容越泽
2023-03-14

>

  • 顺序流使用一次

    贸易蒸汽不是

    对于order流的每个元素,您都需要根据trade的内容检查一个条件,但是您只能迭代它一次,这就是问题所在。

  •  类似资料:
    • 我已经在JDK 1.8上工作了几天,遇到了一些类似的代码: 现在,对于一直在使用流()的人来说,它可能看起来既简单又干净,但我找不到实现方法的实际类。 当我说列表时,我有以下问题。流(): 我从哪里获取? 他们是如何在不实际“干扰”现有集合的情况下实现它的?(假设他们没有接触它们) 我确实试着浏览了java的文档。util。AbstractCollection和java。util。Abstract

    • 为了更好地理解新的流API,我试图转换一些旧代码,但我被困在这一个。 我似乎无法为它创建有效的收集器:

    • 我想获取地图的值,找到min值,并为地图的每个条目构造一个新的CodesWitMinValue实例。我希望使用Java11个流,我可以在多行中使用多个流(一个用于min值,一个用于转换)来实现这一点。是否可以使用java 11流和收集器在单行中实现?谢谢。

    • 我最近在研究java函数界面,想知道方法参考是如何在收集流方法上工作的。 在java留档上,收集方法得到3个参数:供应商、累加器和组合器。 ...这是示例代码。 所以,我的问题是: > 参数类型 正如您在上面的代码中看到的,收集方法接收Bi消费者接口作为累加器和组合器的参数。 但是,ArrayList::add和ArrayList::addAll方法只接受一个参数(不是“Bi”,而是“一元”!)。

    • 我使用的是java 11,我有一个名为MyObject的对象列表,看起来像这样 我想使用流将这些对象收集到地图中 我试着用收集器来做。toMap(),但似乎不可能做到这一点 我的问题是可以制作一张地图吗

    • 我有一个列表的地图,并希望收集所有的值,然后流在收集的列表上,所以给出:- 下面的工作/显示了我想用迭代做什么,但我想在流中做这些,而不是使用迭代创建一个中间列表:- 因此,我希望将列表的映射流化到一个列表中,然后在一个流中处理该子列表,而不是必须在两个语句中完成上述操作(即通过迭代构建列表,然后进行流化以筛选/排序和收集)。 到目前为止,我还没有做到这一点,当我尝试流式/收集地图时,我会遇到编译