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

时间:2010-03-09 22:43:33

标签: java data-structures

我正在寻找一种Java内置数据结构,它最适合处理相邻的房间。 我有一个网格/地板分为随机生成的房间,如:

 + + + + + + + + + + + + + + + + + + + +
 +                         +           +
 +                         +           +
 +                         +           +
 +                         +           +
 +                         +           +
 +                         +           +
 +                         +           +
 + + + + + + + + + + + + + + + + + + + +
 +         +         +                 +
 +         +         +                 +
 +         +         +                 +
 +         +         +                 +
 +         +         +                 +
 + + + + + + + + + + + + + + + + + + + +
 +         +             +             +
 +         +             +             +
 +         +             +             +
 +         +             +             +
 + + + + + + + + + + + + + + + + + + + +

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

有人有建议吗?

感谢

2 个答案:

答案 0 :(得分:2)

你只需要存储:

  1. 每个房间的对立角落
  2. 由房间形成的图形的adjacency graph/matrix作为节点,邻接作为边缘。

答案 1 :(得分:1)

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

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

在Java中,图表可以用Map<Room,List<Room>>表示。基本上,它就是它所说的:它是从Room到其相邻Room列表的地图。

或者,如果您更喜欢使用基本整数和数组,则可以使用邻接矩阵表示boolean[][] adj,其中adj[i][j] == true当且仅当空间i和空间{{1}时是邻居。