Java中的数据结构无向图

Java中的数据结构无向图,java,graph,hashmap,Java,Graph,Hashmap,假设一个边具有int值的无向图 示例图: 边缘值示例: 我正在编写一个程序,执行以下操作:给定一个节点,返回该节点所涉及的所有边以及相关值。例如:IN:B→ 输出:C,2,D,2。或者在:C→ 出局:B,2。 我正在寻找一个有效的数据结构来做到这一点。这个问题不是从图论推导出来的,我只是用它来解释。我对最短路径等不感兴趣,只对这种数据存储感兴趣 我唯一能迅速想到的是: HashMap<String,Tuple> 然后,我会将此集合中的每条边放置两次,例如伪代码: hm.add(A,

假设一个边具有int值的无向图

示例图:

边缘值示例:

我正在编写一个程序,执行以下操作:给定一个节点,返回该节点所涉及的所有边以及相关值。例如:IN:B→ 输出:C,2,D,2。或者在:C→ 出局:B,2。 我正在寻找一个有效的数据结构来做到这一点。这个问题不是从图论推导出来的,我只是用它来解释。我对最短路径等不感兴趣,只对这种数据存储感兴趣

我唯一能迅速想到的是:

HashMap<String,Tuple>
然后,我会将此集合中的每条边放置两次,例如伪代码:

hm.add(A, new Tuple(B,1))
hm.add(B, new Tuple(A,1))
有更有效的方法吗?

番石榴的ValueGraph怎么样


如果有一个biMap,您可以根据关键点以及基于顶点id的值进行查找,那该怎么办?在您的情况下,它将是Map?它不好,因为hm.addB,new TupleC,2覆盖了B-A边。@saka1029您是对的。它必须是HashMap。@SMA BiMap听起来不错,但正如saka1029正确指出的,我需要一些列表,如。。。
HashMap<String,Tuple>
class Tuple{
    String node;
    int value;
}
hm.add(A, new Tuple(B,1))
hm.add(B, new Tuple(A,1))