Stream在某些条件下从一个创建两个对象

时间:2017-02-07 05:21:06

标签: java java-8 java-stream

我有一个对象列表。

每个对象看起来像("1", "test","test1","25"),如果我的值测试存在,我想从上面的示例对象过滤中创建两个对象,然后创建("1", "test","25"),如果" test1"然后创建新对象("1", "test1","25")

所以如果列表中的对象是("1", "test","test1","25"), 我将创建两个对象("1", "test","25")("1", "test1","25")

如果列表中的对象是("1", "test","","25"), 我将只创建一个对象("1", "test","25")

1 个答案:

答案 0 :(得分:3)

由于您的描述非常抽象,我只能在相同的抽象层次上告诉您解决方案。

您正在寻找flatMap operation。您可以像

一样使用它
stream.flatMap(item -> condition(item)?
    Stream.of(createItemA(item), createItemB(item)): // two elements
    Stream.of(createItemA(item))                     // single elment
// chain subsequent operations