Я создал график, который содержит узлы и дуги.Когда я закрываю приложение SWING и вручную обновляю структуру графа (т.е. удаляю некоторые узлы и дуги), старая структура графа не удаляется из памяти.Например:
ArrayList<Node> nodes = new ArrayList<Node>();
ArrayList<Arc> arcs = new ArrayList<Arc>();
nodes.add(new Node("N1"));
nodes.add(new Node("N2"));
nodes.add(new Node("N3"));
arcs.add(new Arc("N1","N2"));
arcs.add(new Arc("N2","N3"));
Graph g = new Graph(nodes,arcs);
В классе Node у меня есть:
@Override
public String toString() {
return super.toString() +
(isNotConnected() ? " IS NOT CONNECTED" : "" );
}
Затем я закрываю приложение, удаляю узел "N3" и дугу ("N2", "N3") и снова запустите приложение.Это говорит о том, что N3 IS NOT CONNECTED
.Но я удалил N3 !!!Чтобы закрыть приложение, я использую:
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Также я попытался использовать g = null
, но это также не помогло.
ОБНОВЛЕНИЕ:
public class Node {
private List<Arc> incoming = new ArrayList<Arc>();
private List<Arc> outgoing = new ArrayList<Arc>()
protected Node(String name) {
super(name);
}
// ...
public boolean isNotConnected() {
return incoming.isEmpty() && outgoing.isEmpty();
}
public void addIncoming(Arc arc) {
this.incoming.add(arc);
}
public void addOutgoing(Arc arc) {
this.outgoing.add(arc);
}
}