我正在寻找一种Java内置数据结构,它最适合处理相邻的房间。 我有一个网格/地板分为随机生成的房间,如:
+ + + + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + +
我正在寻找一种数据结构,在这种数据结构中,最快/最容易存储这个网格,并找出哪些房间与哪些房间相邻。
有人有建议吗?
感谢
答案 0 :(得分:2)
你只需要存储:
答案 1 :(得分:1)
您可以使用图形将房间表示为节点,将邻近关系表示为边缘。
您可以通过多种不同方式表示图表。在这种情况下,由于关系是稀疏的,最好使用邻接列表而不是邻接矩阵。
在Java中,图表可以用Map<Room,List<Room>>
表示。基本上,它就是它所说的:它是从Room
到其相邻Room
列表的地图。
或者,如果您更喜欢使用基本整数和数组,则可以使用邻接矩阵表示boolean[][] adj
,其中adj[i][j] == true
当且仅当空间i
和空间{{1}时是邻居。