Java - 如何返回父方法?

HYB*_*R1D 1 java arraylist

我正在研究一种方法,如果密码匹配,应该将客人检查到房间.该方法还应返回该房间.

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()方法返回房间.有什么方法可以做到这一点吗?

And*_*ner 7

使用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)