【发布时间】:2014-09-18 15:31:35
【问题描述】:
我有享元模式,我尝试将 for 循环转换为流,但结果不同:
public Line getLine(Color color) {
for(Line line: pool) {
if(line.getColor().equals(color)) {
return line;
}
}
return createLine(color);
}
factory.getLine(Color.RED);
factory.getLine(Color.RED);
System.out.println(getPool().size()); // print 1
重构代码:
public Line getLine(Color color) {
return pool.stream()
.filter(l -> l.getColor().equals(color))
.findFirst()
.orElse(createLine(color));
}
factory.getLine(Color.RED);
factory.getLine(Color.RED);
System.out.println(getPool().size()); // print 2
流有什么问题?
【问题讨论】:
-
“它不起作用”不是问题陈述。告诉我们您想要什么行为,以及您实际得到什么行为。包括您收到的任何错误消息的确切措辞,并指定导致错误消息的代码行。
标签: java for-loop java-8 java-stream