将多个Java 8流合并/使用到一个流中

时间:2018-01-29 10:08:09

标签: java java-stream

说我有两个流:

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执行此操作。

1 个答案:

答案 0 :(得分:0)

你想要Stream.map吗?例如

Stream<MyObj> objs = ids.map(id->new MyObj(id, "some data"));

这正是op想要的。然后,如果他们想要更新他们之后可以的对象的值,并且对象知道他们的id,以便可以获得。

如果他们想要“压缩”两个流,他们应该检查现有的答案。