说我有两个流:
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");
现在,我想使用objects
中的数据更新我的ids
信息流。结果应该等同于以下Stream:
Stream<MyObj> objects = Stream.of(new MyObj("id1", "some data"), new MyObj("id2", "some other data");
因此我想知道是否有一种方法可以消耗两个流,当时只有一个元素。我想象某种类型的“DoubleConsumer”(与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的zip
函数的情况下解决这个问题。但问题是如何使用Java Streams执行此操作。
答案 0 :(得分:0)
你想要Stream.map吗?例如
Stream<MyObj> objs = ids.map(id->new MyObj(id, "some data"));
这正是op想要的。然后,如果他们想要更新他们之后可以的对象的值,并且对象知道他们的id,以便可以获得。
如果他们想要“压缩”两个流,他们应该检查现有的答案。