我正在研究一种方法,如果密码匹配,应该将客人检查到房间.该方法还应返回该房间.
public Room checkIn(String password, String guestName) {
assert (guestName != null);
if (this.password.testWord(password) && roomList.stream().allMatch(r -> r.getGuest().getName() != guestName)) {
roomList.forEach(r -> {
if (r.getGuest() == null) {
new Guest(guestName).checkin(r);
return r;
}
});
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
Eclipse给出了一个关于在forEach()方法内返回的错误,因为forEach()不应返回任何内容.我正试图让checkIn()方法返回房间.有什么方法可以做到这一点吗?
使用Stream.findFirst()得到第一个匹配的元素:
Optional<Room> r = roomList.stream().filter(r -> r.getGuest() == null).findFirst();
if (r.isPresent()) {
new Guest(guestName).checkin(r.get());
return r.get();
}
Run Code Online (Sandbox Code Playgroud)