Создание графика в java

Я хочу создать программу, которая создает граф (конкретный график программы), который хранит значения в узлах, а также запоминает, к каким другим узлам подключены отдельные узлы.

Я думаю об этом, используя связанный список. Правильно ли это? Любые другие рекомендации будут очень признательны.

Ответ 1

По большей части это хорошая идея для моделирования вашего графика с помощью списка смежности. Возможно, существуют существующие рамки для этого, но если вы заинтересованы в представлении в качестве упражнения, вам обычно нужны две вещи. Во-первых, HashMap, содержащий все ваши узлы, ярлык node для вашего node может быть ключом, сам node является значением.

Документы API Java HashMaps здесь.

В каждом объекте node вам понадобится список узлов, которые находятся рядом с этим node. Это лучше всего сделать с помощью ArrayList, который документирован здесь.

Здесь, как это может быть организовано.

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

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

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

Большинство алгоритмов, которые вы хотите запустить на графике, будут хорошо работать в этом представлении.

Ответ 2

То, что вы ищете, выглядит как API TreeNode. На самом деле есть хороший внутри пакета swing, который уже присутствует в Java SE по умолчанию: javax.swing.tree.DefaultMutableTreeNode. Он может использоваться вне приложения Swing и обеспечивает стандартную модель TreeNode.

Вы найдете все, что вам подходит: getChildren(), getParent(), setUserObject()... и т.д. и т.д. каждый рекурсивный метод для сканирования и поиска по дереву узлов.

Хорошей новостью является то, что вы заработаете возможность написать интерфейс JTree через несколько минут!

Ответ 3

Вы можете написать свой собственный объект графика или использовать что-то вроде Jung.