Avatar billede jonjagd Nybegynder
04. maj 2001 - 10:31 Der 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.
Avatar billede disky Nybegynder
04. maj 2001 - 10:36 #1
har du kigget på TreeMap, TreeSet osv ?

Java har mange collection typer indbygget i forvejen
Avatar billede logical Nybegynder
04. maj 2001 - 12:55 #2
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;

public Node(Object data, Node parent) {
  this.data = data;
  this.parent = parent;
}

public void addChild(Node n) {
  children.add(n);
}
publig Iterator getChildren() {
  return children.iterator();
}
}

Det var (top of my head) hvad du evt. har brug for
Avatar billede shartvig Nybegynder
04. maj 2001 - 14:11 #3
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
Avatar billede jonjagd Nybegynder
04. maj 2001 - 14:23 #4
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?
Avatar billede logical Nybegynder
04. maj 2001 - 15:12 #5
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

Avatar billede jonjagd Nybegynder
04. maj 2001 - 15:36 #6
Det er fint. Nu har vi lidt at arbejde videre med.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester