Java 重构循环,对流产生副作用
我想将Java 7代码重构为Java 8 下面是Java 7代码:Java 重构循环,对流产生副作用,java,lambda,java-8,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); } 我有一个missing返回语句错误 如何使用Java 8流编写代码?在映射中返回d: bList.stream().map(b ->
List<A> aList = new ArrayList<>();
for (B b : bList) {
D d = new D(b.getSomeWhat());
d.setDisabled(true);
aList.add(d);
}
我有一个missing返回语句
错误
如何使用Java 8流编写代码?在映射中返回
d
:
bList.stream().map(b -> {
D d = new D(b.getSomeWhat());
d.setDisabled(true);
return d;
}).collect(Collectors.toList());
代码中有两个问题:
()-{}
构造需要返回语句d.setDisabled(true)
返回void bList.stream()
.map(B::getSomeWhat)
.map(D::new)
.map(d -> {
d.setDisabled(true);
return d;
}).collect(Collectors.toList());
添加“返回d;”在'd.setDisabled(true);'顺便提一下不要试图将整个代码重写为
Java8
。您所展示的代码可能不应该被触碰,如果它是那么简单的话。顺便说一句,流解决方案并不简单,只是稍微慢一点;-)将第二个new
从dd=new-new-D(b.getd())中删除
您还可以将其分为两个管道步骤:第一个步骤是amap
创建D
s,第二个步骤是apeek
,调用setDisabled(true)
。您可以通过链接peek
-javadoc来代替最后的map
。。。当然,在应用peek
:-)之前应该阅读
bList.stream()
.map(B::getSomeWhat)
.map(D::new)
.map(d -> {
d.setDisabled(true);
return d;
}).collect(Collectors.toList());