gpt4 book ai didi

java - 3维不同类型 map 或列表: List(ID=integer) of List(ID=integer) of int[]

转载 作者:行者123 更新时间:2023-12-02 13:35:40 26 4
gpt4 key购买 nike

我要 build 一张酒店 table 。但我在尝试用 Java 实现此功能时遇到了问题。

我的酒店有楼层(int id) x 房间(int id) x 字段(字符串状态,整数计数器)

相同的在 php 中看起来像:

$level=1; $room=2;
if(isset($hotel[$level][$room])) {
print("Room: ".$level*100+$room);
print(", Status: ".$hotel[$level][$room]['status']);
print(", Total clients:".$hotel[$level][$room]['counter']);
}

此打印返回我(如果房间存在):房间: 102,状态:已保留,客户总数: 8”;

现在我想在 JAVA 中也有同样的东西。

但问题是,我无法构建这个:

int[][][] my hotel;

因为,我的多维数组中有不同的类型。

我尝试做这样的事情:

Map<String, List<String>> myHotel = new HashMap<String, List<String>>();

或者:

List<List<List<String>>> myHotel;

但是

out.println(
myHotel.get(1).get(2).get("status") + "\n" +
out.println(myHotel.get(1).get(2).get("status"));

或者甚至:

out.println("Status:" +
myHotel.get(1).get(2).get(0) + "\tClients:" +
myHotel.get(1).get(2).get(1)
);

还有如何放置元素。我在想某事,比如:当它是 map 表时:

myHotel.put(1).add(2).add(0, "Reserved")); 
// But better would be:
// myHotel.put(1).add(2).add("status", "Reserved"));

或者当它是列表<List<List<String>>> :

myHotel.add(1).add(2).add(0, "Reserved"));
// But better would be:
// myHotel.add(1).add(2).add("status", "Reserved"));

感谢您的帮助:)

最佳答案

我可能会将酒店建模为一个对象Hotel,将房间建模为一个对象Room等,而不是将所有内容都堆叠在一个多层集合中。这很快就会变得非常冗长,一旦您更改关系,该更改就会反射(reflect)在整个代码中。

每个对象都包含对其组件的引用(Hotel 包含 Room 等列表)。一旦你这样做了,我想一切都会变得更加清晰。此外,您的 Hotel 对象了解如何查找 RoomRoom 对象了解如何获取其属性,并且您的调用代码变得不那么冗长,并且对 Hotel/Room 实现的依赖性大大降低。例如你可以这样做:

Hotel hotel = new Hotel();
Set<Room> rooms = hotel.getFreeRooms(RoomType.NON_SMOKING);

因此,您的对象会为您(客户端)完成工作,而不是您自己浏览对象层次结构并完成工作。

这就是面向对象的最终目标。一旦我发现自己将集合的集合放在一起,这通常表明需要一个新的对象类。

关于java - 3维不同类型 map 或列表: List(ID=integer) of List(ID=integer) of int[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1935706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com