在 Java 中创建图表

15
我想创建一个程序来生成图表(具体来说是程序图表),该图表在节点上存储值,并存储每个单独节点连接到的其他节点。
我考虑使用链表来实现,这是正确的方法吗?如有其他建议,请不吝赐教。
3个回答

25

一般来说,使用邻接表对图进行建模是一个很好的主意。可能有现成的框架可以实现这一点,但如果你对表示方法感兴趣,通常需要两个要素。首先,一个包含所有节点的HashMap,节点标签可以作为键,节点本身作为值。

Java API文档中描述了HashMaps 在此

在每个节点对象中,您需要一个列表,其中包含与该节点相邻的节点。最好使用ArrayList来完成这个任务,这里有文档在此处

以下是组织方式示例:

import java.util.Hashmap;
import java.util.ArrayList;

class Node {
    String label;
    ArrayList<Node> adjacencyList;
}

HashMap<String, Node> graph = new HashMap<String, Node>();

大多数你想在图上运行的算法都可以在这种表示法上很好地运行。


1

你所需要的似乎是一个TreeNode API。 实际上,在Java SE中已经有了一个很好的swing包内置的实现,即javax.swing.tree.DefaultMutableTreeNode。 它可以在Swing应用程序之外使用,并提供非常标准的TreeNode模型。

你会发现每个方法都能满足你的需求:getChildren()、getParent()、setUserObject()等等,以及用于遍历和搜索节点树的递归方法。

好消息是,你将能够在几分钟内编写一个JTree UI!


0

你可以编写自己的图形对象,或者使用类似于Jung这样的工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接