Hallo,
ich hab ein kleines Denkproblem.
Obwohl ich nun schon ne kleine Weile mit Java arbeite, bin ich immer noch ganz schön in der C-Welt verwurzelt.
Problem ist schnell erläutert.
Ich hab ne Node-Klasse, die ne Erweiterung jon java.awt.Point2D ist und ne Line-Klasse, die von java.awt.Line2D erbt
Jeder Knoten merk sich in ner Liste welche Kanten an ihm hängen und jede Kante weiss von welchen Knoten sie begrenzt wird. Im Grunde also die Grundstruktur eines Graphen.
Zusätzlich hab ich ne Welt, in der alle Kanten und alle knoten gespeichert sind.
also ganz grob:
mit der Methode addLine füge ich neue kanten zur Welt hinzu
Jetzt kommt mein Problem. Ich gehe jetzt die Liste der Linien durch und hole jeweils die zwei Nodes der Line.
Dann mach ich ein paar Vergleiche und stelle dann u.U. fest, dass ich jetzt einen Knoten löschen will und die Kanten die vorher an ihm hingen an einen anderen hängen will.
In C hätte ich die pointer auf die Kanten bzw. Knoten gespeichert und hätte keine Probleme.
Leider funktioniert folgendes irgendwie nicht:
ich will also den Knoten aus der globalen List löschen, der an der Kante that hängt. (bessergesagt, der, den mir getP1() zurückliefert)
Die ganzen Typen stimmen im echten Quelltext, es ist also kein syntaktisches Problem.
Ich würde mich über nen kleinen Denkanstoß sehr freuen.
ich hab ein kleines Denkproblem.
Obwohl ich nun schon ne kleine Weile mit Java arbeite, bin ich immer noch ganz schön in der C-Welt verwurzelt.
Problem ist schnell erläutert.
Ich hab ne Node-Klasse, die ne Erweiterung jon java.awt.Point2D ist und ne Line-Klasse, die von java.awt.Line2D erbt
Jeder Knoten merk sich in ner Liste welche Kanten an ihm hängen und jede Kante weiss von welchen Knoten sie begrenzt wird. Im Grunde also die Grundstruktur eines Graphen.
Zusätzlich hab ich ne Welt, in der alle Kanten und alle knoten gespeichert sind.
also ganz grob:
Code:
class Node{
public Set connectedLines;
public double x;
public double y;
}
class Line{
public node n1;
public node n2;
}
class World{
public Set nodes;
public Set lines;
public void addLine(Line line){
this.nodes.add(line.getP1());
this.nodes.add(line.getP2());
this.lines.add(line)
}
}
mit der Methode addLine füge ich neue kanten zur Welt hinzu
Code:
public static void main (String args[]){
World world = new World();
while(es gibt von irgendwo Linien)
world.addLine(currLine);
}
}
Jetzt kommt mein Problem. Ich gehe jetzt die Liste der Linien durch und hole jeweils die zwei Nodes der Line.
Dann mach ich ein paar Vergleiche und stelle dann u.U. fest, dass ich jetzt einen Knoten löschen will und die Kanten die vorher an ihm hingen an einen anderen hängen will.
In C hätte ich die pointer auf die Kanten bzw. Knoten gespeichert und hätte keine Probleme.
Leider funktioniert folgendes irgendwie nicht:
Code:
Line that = world.lines.getIrgendeineKante();
if (node.remove(that.getP1())) System.Out.Println("das wird man nie lesen können");
ich will also den Knoten aus der globalen List löschen, der an der Kante that hängt. (bessergesagt, der, den mir getP1() zurückliefert)
Die ganzen Typen stimmen im echten Quelltext, es ist also kein syntaktisches Problem.
Ich würde mich über nen kleinen Denkanstoß sehr freuen.