2012-04-16 15 views
11

Chcę utworzyć program, który tworzy wykres (dla konkretnego wykresu programu), który przechowuje wartości w węzłach, a także przechowuje to, do którego innych węzłów są podłączone poszczególne węzły.Tworzenie wykresu w java

Myślę o tym, używając tej listy. Czy to właściwa droga do tego? Wszelkie inne porady byłyby bardzo mile widziane.

Odpowiedz

21

W większości przypadków dobrze jest zamodelować wykres za pomocą listy przyległości. Istnieją prawdopodobnie istniejące ramy do tego, ale jeśli interesujesz się reprezentacją jako ćwiczeniem, zazwyczaj potrzebujesz dwóch rzeczy. Po pierwsze, HashMap zawierający wszystkie twoje węzły, etykieta węzła dla twojego węzła może być kluczem, sam węzeł jest wartością.

Dokumenty interfejsu Java API HashMaps here.

W każdym obiekcie węzła potrzebna jest lista węzłów sąsiadujących z tym węzłem. Najlepiej zrobić to za pomocą tablicy ArrayList, która jest udokumentowana here.

Oto, jak można to zorganizować.

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

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

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

Większość algorytmów którą chcesz uruchomić na wykresie będzie działać dobrze na tej reprezentacji.

+0

Spróbuję, dziękuję bardzo. – user1079226

0

Możesz napisać własny obiekt wykresu lub użyć czegoś podobnego do Jung.

1

To, czego szukasz, wydaje się być API TreeNode. W pakiecie huśtawki znajduje się już niezły pakiet, który jest już obecny w Java SE, domyślną implementacją jest: javax.swing.tree.DefaultMutableTreeNode. Może być używany poza aplikacją Swing i zapewnia bardzo standardowy model TreeNode.

Znajdziesz tu wszystko, co potrzeba, aby pasowały do: getChildren(), getParent(), setUserObject() ... itd, a każdy rekurencyjna metoda indeksowania i przeszukiwania na drzewie węzłów.

Dobrą wiadomością jest to, że zyskasz możliwość napisania interfejsu użytkownika JTree w kilka minut!

Powiązane problemy