【发布时间】:2020-09-20 16:26:28
【问题描述】:
我使用以下代码(简化):
主要:
Foe[] foe = Stream.of(foe_2).map(Mapper_1).map(Mapper_2).toArray(Foe::new);
在 Mapper_1 中:
{
System.out.println("Mapper_1");
do stuff
}
在 Mapper_2 中:
{
System.out.println("Mapper_2");
do other stuff
}
我需要在 Mapper_2 启动之前完成 Mapper_1。
Mapper_1和Mapper_2调用的函数互不调用!
我的预期:
Mapper_1 映射Stream.of(foe_2) 返回的流的所有元素,然后 Mapper_2 映射到输出数组,得到这个输出:
Mapper_1
...
Mapper_1
Mapper_2
...
Mapper_2
持续发生的事情:
Mapper_1 映射Stream.of(foe_2) 的第一个元素,紧随其后,Mapper_2 获取第一个结果并将其映射,准备好放入输出数组,然后 Mapper_1 映射第二个元素,从而产生以下输出:
Mapper_1
Mapper_2
NullpointerExcpetion
我得到了异常,因为 Mapper_1 没有映射所有元素并且数据结构混乱。
这是正常的行为,对我来说会违反直觉,还是我错过了什么?
【问题讨论】:
-
你能分享更多关于 Mapper_1 和 Mapper_2 应该做什么的细节吗?
-
Mapper_1 加载一些数据。 Mapper_2 处理这些数据(构建有点像一个双链表,每个有 2 个下一个和前一个元素),但需要所有数据,否则会遇到空指针
标签: java java-stream