Java 包含引用到映射中其他键的值的映射是有向图的最简单形式吗?

Java 包含引用到映射中其他键的值的映射是有向图的最简单形式吗?,java,list,map,directed-graph,Java,List,Map,Directed Graph,好吧,我想你必须使用树形图,让你的钥匙按自然顺序排列。如果不是的话,那么它现在将是一个无向图,不是吗?除此之外,它是否会尊重直接图的所有其他标准将取决于您对放入其中的键和值对象的实际实现 我认为它的主要问题是,您可能无法轻松存储每个边缘的数据。这取决于一个V型的对象是否会给你这个。不过,我同意Andrei LED的意见,即最好使用显式边缘类型: public interface ResponseChoiceI { String getResponseText(); void

好吧,我想你必须使用树形图,让你的钥匙按自然顺序排列。如果不是的话,那么它现在将是一个无向图,不是吗?除此之外,它是否会尊重直接图的所有其他标准将取决于您对放入其中的键和值对象的实际实现

我认为它的主要问题是,您可能无法轻松存储每个边缘的数据。这取决于一个V型的对象是否会给你这个。不过,我同意Andrei LED的意见,即最好使用显式边缘类型:

public interface ResponseChoiceI {

    String getResponseText();

    void setResponseText(String responseText);

    String getDialogueKey();

    void setDialogueKey(String dialogueKey);
}
Map
如果您根本不需要存储边缘元数据,则可以更简单:

Map<K,Collection<Edge<K>>>
Map
作为一体式方法的替代方法,我看到了由两个独立集合表示的图,一个用于节点,一个用于边。如果N是一个节点,则如下所示:

Map<K,Collection<K>>
集合//节点
集合//节点之间的边

什么是
V
?它似乎是一个相当短的类型名,但它不能是一个类型参数,对吗?不,它不能。这只是一个抽象的概念。这将是一个已定义的类型。我不太明白这个V的意思。我想Map@AndreiLED请看我的编辑。这可能有助于澄清一些问题。我认为你可以在ResponseEchoiceI中存储对DialogueNodeI的引用(我看到它的唯一用途是通过它的键快速修改对话,虽然我不认为这是一个真实的情况;但最好在ResponseEchoiceI中存储对DialogueNodeI的引用,而不是一个键)。你应该把根对话存储在某个地方作为入口点。我认为你对键顺序和图形是否直接的看法是不对的。如果连接节点的边是定向的,则该图是直接的。这与表示地图中的键顺序无关。同意,你是对的,现在我真的想到了,我意识到我犯了一个愚蠢的错误:)请查看我上面的编辑。这可能有助于澄清一些事情。
public interface ResponseChoiceI {

    String getResponseText();

    void setResponseText(String responseText);

    String getDialogueKey();

    void setDialogueKey(String dialogueKey);
}
Map<K,Collection<Edge<K>>>
Map<K,Collection<K>>
Collection<N>  // nodes
Collection<Edge<N>>  // edges between nodes