0

さまざまなタイプのグラフを使用するので、一般的な動作を抽象クラスに入れることにしました。

public abstract class Graph {

private List<Node> nodes;
private List<Edge> edges;

public void addNode(Node n) {
    nodes.add(n);
}

public void addEdge(Edge e) {
    edges.add(e);
}

public Node getNode(Node n) {
    return nodes.get(nodes.indexOf(n));
}

public Edge getEdge(Node left, Node right) {
    return edges.get(edges.indexOf(new Edge(left, right)));
   }
}

クラスがabstractgetNode()であっても、(まだ)文句を言いません。Node問題は、エッジも抽象的ですが、ノードによってエッジを識別できるように と がオーバーライドされていることですequals()。エッジ リストを保護するなどして、すべてのサブクラスhashCode()に同じメソッドを実装する必要はないようです。getEdge()

これに対する解決策はありますか?

4

1 に答える 1