有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

arraylist Java如何返回到父方法?

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

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


共 (1) 个答案

  1. # 1 楼答案

    使用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();
    }