加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 查找元素或检查它是否存在于数组/列表中?

发布时间:2020-12-15 05:15:01 所属栏目:Java 来源:网络整理
导读:我是新手,我真的不明白这是如何运作的. 我列出了一个存储房间信息的清单: ListRoom rooms = new ArrayList(); 每个房间存储其房间号(整数),类型(枚举),价格(双),容量(整数)和设施(字符串)的数据. 长话短说,我的问题是: (1)如何搜索此列表,例如检查是否存在
我是新手,我真的不明白这是如何运作的.

我列出了一个存储房间信息的清单:

List<Room> rooms = new ArrayList<>();

每个房间存储其房间号(整数),类型(枚举),价格(双),容量(整数)和设施(字符串)的数据.

长话短说,我的问题是:

(1)如何搜索此列表,例如检查是否存在编号为’401’的房间?

(2)如何打印出每个单独的房间及其信息?

额外信息:

我可以通过以下方式添加房间:

Room r = new Room(roomNumber,roomType,price,capacity,facilities);
rooms.add(r);

(我使用构造函数和getRoomNumber()等方法创建了一个’Room’类.

我发现我可以搜索“房间”列表并显示我知道哪个房间存在的信息,例如:房间号101:

// Info for room '101'

Room room = rooms.stream()
            .filter(r -> r.getRoomNumber() == 101)
            .findFirst().orElseThrow();

System.out.println("Room Number: " + room.getRoomNumber());
System.out.println("Type: " + room.getRoomType());
System.out.println("Cost: " + room.getPrice());
System.out.println("Capacity: " + room.getCapacity());
System.out.println("Facilities: " + room.getFacilities());

上面的代码工作正常.

我尝试使用上面的try和catch来查看是否存在一个房间(如果它没有抛出NoSuchElementFound异常)但这似乎根本不起作用,代码甚至不编译.

我也尝试过使用(有和没有valueOf):

Arrays.asList(rooms).contains(Integer.valueOf(401))

但这并没有真正起作用.代码编译但它实际上没有做任何事情.

所以,我的问题(如前所述)是:

(1)如何搜索此列表,例如检查是否存在编号为’401’的房间?

(2)如何打印出每个单独的房间及其信息?

谢谢!

解决方法

如果要检查特定房间并抛出异常(如果不存在),则需要向OREseThrow()方法提供异常供应商,例如:

List<Room> rooms = new ArrayList<>();
Room room = rooms.stream()
        .filter(r -> r.getRoomNumber() == 101)
        .findFirst()
        .orElseThrow(() -> new NoSuchElementException());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读