重构for循环,带有副作用流

emo*_*ssi 2 java lambda java-8

我想将Java 7代码重构为Java 8.

这里是Java 7代码:

List<A> aList = new ArrayList<>();
for (B b : bList) {
    D d = new D(b.getSomeWhat());
    d.setDisabled(true);
    aList.add(d);
}
Run Code Online (Sandbox Code Playgroud)

我在Java 8中尝试这个:

bList.stream().map(b -> {
    D d = new new D(b.getSomeWhat());
    d.setDisabled(true);
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我有一个missisng return statement错误.

如何用Java 8流编写代码?

MBe*_*Bec 7

返回d你的映射:

bList.stream().map(b -> {
    D d = new D(b.getSomeWhat());
    d.setDisabled(true);
    return d;
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

  • 从'D d = new new D(b.getSomeWhat())中删除第二个`new`;` (2认同)