在Stream中创建和修改对象

时间:2018-02-20 11:55:18

标签: java java-8 stream java-stream

我有一个类似的问题。

myList
    .stream()
    .x->y=f(x)
    .x -> h(x) = x'
    .x' = y(x')

所以,我有一个列表,我想要流式传输并执行x并执行f(x)并将其存储在y中,然后执行h(x)并将其存回在x中,然后使用yx'并再次将其存储在x'中。

1 个答案:

答案 0 :(得分:3)

使用该流很难做到这一点,在我看来,这样做并没有多大意义,使用经典循环会更容易。在这里你可以看到一种流式方式:

myList.stream()
    .map(x -> new AbstractMap.SimpleEntry<>(h(x), f(x)))
    .map(entry -> g(entry.getKey()/* x' */, entry.getValue()/* y */))
    .forEach(x2 -> System.out.println("x': "+x2));

被修改

与经典循环相同的代码:

for (Integer x: myList){
    y = f(x);
    x = h(x);
    x2 = g(x, y);
    System.out.println("x': "+x2);
}