【发布时间】:2016-09-16 22:01:11
【问题描述】:
我想要一个 Java 8 Streams 的简单示例来理解它。我有返回免费出租车的代码。我想用使用 Java 8 流的等效代码替换这个 for 循环:
private List<Taxi> taxis = new ArrayList<Taxi>();
Taxi scheduleTaxi(){
for (Taxi taxi : taxis) {
if (taxi.isFree()) {
return taxi;
}
}
return null;
}
我遍历taxis 的列表,并评估taxi 是否符合条件。如果条件适用,我会停止循环并返回taxi。
有什么建议吗?
【问题讨论】:
-
return taxis.stream().filter(Taxi::isFree).findFirst().orElse(null);。最后一个不是Stream方法,而是Optional方法。 -
如果你要使用
Stream,Andreas 是正确的,但你可能应该放弃orElse(null),而是返回Optional<Taxi>,因为它会给你一些方便的方法,比如ifPresent -
@4castle 我决定写一个long answer,并采纳了你的建议。
标签: java for-loop java-8 java-stream