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

时间:2017-02-16 12:42:30

标签: 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);
}

我在Java 8中尝试这个:

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

我有missisng return statement错误。

如何使用Java 8流编写代码?

2 个答案:

答案 0 :(得分:7)

在地图中返回jQuery

d

答案 1 :(得分:2)

您的代码中存在两个问题:

  1. 使用() - {}构造需要return语句
  2. d.setDisabled(true)返回void。
  3. 你可以这样做:

        bList.stream()
            .map(B::getSomeWhat)
            .map(D::new)
            .map(d -> {
                d.setDisabled(true);
                return d;
        }).collect(Collectors.toList());