Java-如何返回到父方法?

Java-如何返回到父方法?,java,arraylist,Java,Arraylist,我正在研究一种方法,如果密码匹配,应该让客人入住房间。该方法还应返回该房间 public Room checkIn(String password, String guestName) { assert (guestName != null); if (this.password.testWord(password) && roomList.stream().allMatch(r -> r.getGuest().getName() != gu

我正在研究一种方法,如果密码匹配,应该让客人入住房间。该方法还应返回该房间

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;
    }
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();
}
Optional r=roomList.stream().filter(r->r.getGuest()==null.findFirst();
if(r.isPresent()){
新来宾(guestName).checkin(r.get());
返回r.get();
}
使用
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();
}
Optional r=roomList.stream().filter(r->r.getGuest()==null.findFirst();
if(r.isPresent()){
新来宾(guestName).checkin(r.get());
返回r.get();
}

使用
for(Room r:roomList)
进行迭代。
Room r=roomList.stream().filter(r->r.getGuest()==null)。findFirst()
@AndyTurner:findFirst是否会返回一个
可选的
?@Henrik yep!我甚至没有打电话的借口;)使用
for(Room r:roomList)
进行迭代。
Room r=roomList.stream().filter(r->r.getGuest()==null.findFirst()
@AndyTurner:findFirst是否会返回一个
可选的
?@Henrik yep!我甚至没有打电话的借口;)if结构可以更改为
r.map(room->newguest(guestName).checkin(room)).orElse(null)
。不过,不确定它是否更可读。if结构可以更改为
r.map(room->newguest(guestName)。checkin(room)).orElse(null)
。不过,不确定它是否更具可读性。