【发布时间】:2018-01-29 10:08:08
【问题描述】:
假设我有两个流:
Stream<String> ids = Stream.of("id1","id2","id3","id4","id5");
Stream<MyObj> objects = Stream.of(new MyObj(null, "some data"), new MyObj(null, "some other data");
现在我想用来自ids 的数据更新我的objects 流。结果应该等同于以下 Stream:
Stream<MyObj> objects = Stream.of(new MyObj("id1", "some data"), new MyObj("id2", "some other data");
因此,我想知道是否有一种方法可以同时使用两个流,一个元素。我想像某种“双重消费者”(与double无关):
Stream<MyObj> result = DoubleConsumer.of(ids, objects)
.map((id, myobj) -> combine(id, myobj));
MyObj combine(String id, MyObj myobj) {
myobj.set(id);
return myobj;
}
知道如何实现这样的目标吗?
更新
我知道我可以在列表的情况下通过一些双循环或 FuncionalJava 的zipfunction 解决这个问题。然而问题是如何用 Java Streams 做到这一点。
【问题讨论】:
-
为什么是双重消费者?您在第二个示例中使用的是 new 吗?
-
你可以使用循环和普通列表吗?
-
可以创建新的 MyObj 实例而不是更新旧实例吗?
-
@agnul,您链接的问题没有答案
标签: java java-stream