Создание графика в 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.