让我们假设我们从这段代码开始
while ((element = getNextElement()) != null) {
// do something
}
并希望重写它,以便getNextElement()返回Optional
,而不是null
。
这样做的首选方法是什么?像
这样的东西while ((element = getNextElement()) && element.isPresent()) {
}
...还是有更好的方法?
还有
for (Optional<ElementType> element = getNextElement(); element.isPresent(); element = getNextElement()) {
// do something
}
是否还有其他/更好的选择(双关语,我猜)?
答案 0 :(得分:2)
Stream.generate(this::getNextElement) ...
以上将生成Stream<Optional<Element>>
。我相信在java 9中存在flatMap
可能性。
目前:
Stream.generate(this::getNextElement)
.filter(Optional::isPresent)
.map(Optional::get)
.forEach(...);