A
Antonine
Gast
Hallo,
ich möchte in einer Methode prüfen, ob ein bestimmtes Element in einem HashSet enthalten ist oder nicht. Wenn es noch nicht drin ist, soll es hinzugefügt werden. Analog soll dies mit zu löschenden Elementen passieren (wenn das zu löschende Element enthalten ist, dann soll es gelöscht werden).
Dachte, dass es nicht besonders kompliziert wäre, aber jedes Mal, wenn ich ein Element hinzufügen möchte, dass bereits im HashSet drin ist, wird es trotzdem hinzugefügt :/ Ebenso werden nicht enthaltene Elemente gelöscht.
Die Methoden sehen so aus:
Wäre super, wenn ihr mir helfen und den/die Fehler im Code verbessern könnt!
Vielen Dank schon mal! 
ich möchte in einer Methode prüfen, ob ein bestimmtes Element in einem HashSet enthalten ist oder nicht. Wenn es noch nicht drin ist, soll es hinzugefügt werden. Analog soll dies mit zu löschenden Elementen passieren (wenn das zu löschende Element enthalten ist, dann soll es gelöscht werden).
Dachte, dass es nicht besonders kompliziert wäre, aber jedes Mal, wenn ich ein Element hinzufügen möchte, dass bereits im HashSet drin ist, wird es trotzdem hinzugefügt :/ Ebenso werden nicht enthaltene Elemente gelöscht.
Die Methoden sehen so aus:
Java:
//zum Hinzufügen
public boolean addNode(Node node) { //Node enthält einen Wert vom Typ String
Iterator<Node> i = nodes.iterator(); //nodes ist ein HashSet mit Elementen vom Typ Node
boolean exists = false;
while (i.hasNext()) {
if(i.next().equals(node)) {
exists = true;
}
}
if(!exists) {
nodes.add(node);
JOptionPane.showMessageDialog(null, "Knoten erfolgreich hinzugefügt."); //wird immer angezeigt!!
return true;
} else {
JOptionPane.showMessageDialog(null, "Knoten " + node.getValue().toString() + "ist \nbereits im Graph vorhanden.");
return false;
}
}
//zum Löschen
public boolean removeNodeEdge(Node node) {
Iterator<Node> i = nodes.iterator();
boolean exists = false;
while (i.hasNext()) {
if (i.next().equals(node)) {
exists = true;
}
}
if (!exists) {
JOptionPane.showMessageDialog(null, "Der zu löschende Knoten \nexistiert nicht."); //wird nicht ausgegeben!!
return false;
} else {
nodes.remove(node);
Iterator<Edge> it = edges.iterator();
while (it.hasNext()) {
Edge edge = (Edge)it.next();
if (edge.getPredecessor() == node || edge.getSuccessor() == node) {
it.remove();
}
}
JOptionPane.showMessageDialog(null, "Knoten erfolgreich gelöscht.");
return true;
}
}
Wäre super, wenn ihr mir helfen und den/die Fehler im Code verbessern könnt!