Java中的数据结构无向图

时间:2018-04-14 11:15:45

标签: java graph hashmap

假设边界具有A---B---C | D 值的无向图。

示例图

A,B : 1
B,C : 2
B,D : 2

示例边缘值

HashMap<String,Tuple>

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

我唯一能够快速提出的方法是:

class Tuple{
    String node;
    int value;
}

,其中

hm.add(A, new Tuple(B,1))
hm.add(B, new Tuple(A,1))

然后我将每个边缘放在这个集合中两次,例如(伪代码):

PhpUnusedAliasInspection inspection = new PhpUnusedAliasInspection();
InspectionManager manager = InspectionManager.getInstance(psiFile.getProject());
List<ProblemDescriptor> checked = inspection.processFile(psiFile, manager);
System.out.println("checked " + checked);

有更有效的方法吗?

1 个答案:

答案 0 :(得分:1)