应该使用什么数据结构来表示街道网络?

时间:2015-01-23 02:03:04

标签: java data-structures data-modeling

我正试图想出一种在我的程序中表示街道网络的方法,只是这样一个简单的方法: 主要街道A有几个交叉点,比如a,b,c,d。 另一条街道B与A平行。所以看起来像这样:

----|a|---|b|----|c|-------------------
                    Street A
----|a|---|b|-----------------|d|------
    | |   | |                 | |
    | |   | |                 | |
----|a|---|b|-----------------| |------
                Street B
------------------------------|d|------

我想也许我可以创建一个Street类来代表两条主要街道,每条街道都有两个交叉点列表:左和右。 但我可以说,当我向网络添加更多街道时,这将变得非常混乱。

所以建议非常感谢! (可能无关紧要,但我正在使用Java)

编辑1:此外,对于此项目,允许的流量方向非常重要 - 即,数据结构应该能够判断街道是单向还是单向 - 方向在哪个方向。我应该能够从数据结构中轻松访问这些信息。

2 个答案:

答案 0 :(得分:1)

创建一个Street类和一个Intersection类。 Intersection类将作为节点运行,并引用与其连接的街道。这可能是您可以使用的最灵活的设计。也许可以为街道终点添加(x,y)坐标。

答案 1 :(得分:0)

街道系统非常适合GraphDB。街道由边和交叉点表示为节点。也许像Neo4j这样的东西可以满足你的需求。如果你不需要那么重的东西,还有其他记忆选择。