2012-04-16 18 views
11

Desidero creare un programma che crei un grafico (per essere specifico un programma grafico), che memorizzi i valori nei nodi e memorizzi anche quali altri nodi sono collegati a ciascun singolo nodo.Creazione di un grafico in java

Sto pensando di farlo utilizzando l'elenco collegato. È questo il modo giusto per farlo? Qualsiasi altro consiglio sarebbe molto apprezzato.

risposta

21

Per la maggior parte è una buona idea modellare il grafico con un elenco di adiacenze. Probabilmente esistono quadri esistenti per farlo, ma se sei interessato alla rappresentazione come esercizio, generalmente desideri due cose. Innanzitutto, una HashMap contenente tutti i nodi, l'etichetta del nodo per il tuo nodo può essere la chiave, il nodo stesso è il valore.

L'API Java documenta HashMaps here.

In ciascun oggetto nodo, è necessario un elenco di nodi adiacenti a tale nodo. Questo è meglio con un ArrayList, che è documentato here.

Ecco come potrebbe essere organizzato.

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

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

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

La maggior parte degli algoritmi che si desidera eseguire su un grafico funzioneranno correttamente su questa rappresentazione.

+0

Proverò questo, grazie mille. – user1079226

0

È possibile scrivere il proprio oggetto grafico o utilizzare qualcosa come Jung.

1

Quello che stai cercando sembra essere un API TreeNode. In realtà ce n'è uno bello all'interno del pacchetto swing che è già presente in Java SE l'implementazione predefinita è: javax.swing.tree.DefaultMutableTreeNode. Può essere utilizzato all'esterno di un'applicazione Swing e fornisce un modello TreeNode molto standard.

Troverete ogni cosa per soddisfare le vostre necessità: getChildren(), getParent(), setUserObject() ... ecc e ogni metodo ricorsivo per la scansione e la ricerca sopra l'albero nodi.

La buona notizia è che guadagnerai la possibilità di scrivere un'interfaccia utente JTree in pochi minuti!

Problemi correlati