04. maj 2001 - 10:31Der er
5 kommentarer og 1 løsning
Søgetræ/begrebshierarki
Vi skal til at oprette et bregrebshierarki der kan bruges til søgning i en database. Vi skal opbygge et søgetræ der for hver rod kan have flere childs og det er derfor ikke binært. Vi søger detaljerede forslag til opbygningen af træet i Java og forslag til andre sites på nettet som beskriver det samme.
Fra javax.swing.tree ligger der nogle implementationer af en træstruktur, som man sagtens kan anvende i andre sammenhæng. Det ligger vist et TreeNode interface, og en række klasser, herunder DefaultMutableTreeNode som gør noget nemt at arbejde med. Alternativt så er det du ønsker et composite pattern, og det kan nemt at implementere ved hjælp af selvdefinerede klasser, ala.
public class Node { ArrayList children = new ArrayList(); Node parent = null; Object data = null;
Hvad med at bruge en XML struktur. Gennem eksempelvis Apache Xerces XML
Der arbejder man jo netop med træer, og api\'et har alle muligheder for netop at tilføje nodes og fjerne dem igen, plus at du kan beskrive træstrukturen i XML
Det ligner noget af det vi skal bruge. Vi har været igang med at definere vores egen klassestruktur sådan som du har foreslået i ovenstående koder. Er iteratoren til at lede træet igennem og er det en opbygning du har fra en af Javas predefinerede klasser?
ArrayList og Iterator er to typer fra java.util, og Iterator beskriver en måde at lede en struktur igennem a.la.
Iterator it = tree.getChildren(); while(it.hasNext()) { Node n = (Node) it.next(); performOperation(n); }
Klassen Node kan iøvrigt rimelig nemt udbygges med flere sigende metoder ala
public Node getParent() { return parent; } public boolean isLeaf() { return children.size() == 0; }
public boolean isRoot() { return parent==null; }
.. Shartvig har foreslået en XML struktur, da XML netop er hierarkisk opbygget, men for at understøtte en XML struktur er der et vist overhead, som I måske ikke har brug for, men ellers er det også en hierarkisk datastruktu
Det er fint. Nu har vi lidt at arbejde videre med.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.