用于映射相邻房间的Java内置数据结构

用于映射相邻房间的Java内置数据结构,java,data-structures,Java,Data Structures,我正在寻找一种Java内置数据结构,它最适合处理相邻房间。 我将网格/楼层划分为随机生成的房间,如下所示: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

我正在寻找一种Java内置数据结构,它最适合处理相邻房间。 我将网格/楼层划分为随机生成的房间,如下所示:

 + + + + + + + + + + + + + + + + + + + +
 +                         +           +
 +                         +           +
 +                         +           +
 +                         +           +
 +                         +           +
 +                         +           +
 +                         +           +
 + + + + + + + + + + + + + + + + + + + +
 +         +         +                 +
 +         +         +                 +
 +         +         +                 +
 +         +         +                 +
 +         +         +                 +
 + + + + + + + + + + + + + + + + + + + +
 +         +             +             +
 +         +             +             +
 +         +             +             +
 +         +             +             +
 + + + + + + + + + + + + + + + + + + + +
我正在寻找一种数据结构,在这种结构中,最快/最容易存储这个网格,并绘制出哪些房间与哪些房间相邻

有人有什么建议吗


谢谢

您可以使用图形将房间表示为节点,将相邻关系表示为边

您可以用许多不同的方式表示图形。在这种情况下,由于关系是稀疏的,所以最好使用邻接列表而不是邻接矩阵

在Java中,图形可以用
Map
表示。基本上,这就是它所说的:它是一张从
房间
到相邻
房间
列表的地图


或者,如果您喜欢使用基本整数和数组,可以使用邻接矩阵表示法
布尔[][]adj
,其中
adj[i][j]==true
当且仅当房间
i
和房间
j
是邻居。

可以使用图形将房间表示为节点,将相邻关系表示为边

您可以用许多不同的方式表示图形。在这种情况下,由于关系是稀疏的,所以最好使用邻接列表而不是邻接矩阵

在Java中,图形可以用
Map
表示。基本上,这就是它所说的:它是一张从
房间
到相邻
房间
列表的地图


或者,如果您喜欢使用基本整数和数组,您可以使用邻接矩阵表示法
布尔[]]adj
,其中
adj[i][j]==true
当且仅当room
i
和room
j
是相邻的。

您只需要存储:

  • 每个房间的对角
  • 由房间作为节点,邻接作为边构成的图的边界
    您只需存储:

  • 每个房间的对角
  • 由房间作为节点,邻接作为边构成的图的边界
    房间保证是长方形的吗?墙壁始终与x/y轴对齐?房间是否保证为矩形?墙是否始终与x/y轴对齐?