私は最近、大学院の隣でソフトウェア開発の練習をするために、グラフ(隣接行列や単なる数値ではなく、両方ともオブジェクトで表されるノードとエッジ)をモデル化するためのツールを書き始めました。ノードにその隣接ノードとそれが付随するエッジを知ってもらいたいのですが。これを行うための明白な方法は、HashSetとHashSetを使用することです。しかし、私がやりたいのは方法を持っていることです
Node_A.getEdge(Node B)
これは、O(1)のノードAとBの間のエッジを返します。これを行うには、ノードを隣接ノードに接続するエッジに隣接ノードをマップする1つのHashMapを使用して、上記の2つのHashSetを置き換えることを考えていました。たとえば、
Node_A.hashmap.get(B)
AとBをつなぐエッジを返す必要があります。ここでの私の問題は、
HashMap.keySet().contains(Node A);
HashMap.values().contains(Edge e);
どちらもO(1)で動作しますか?それが標準ライブラリの場合ではない場合、keySet()とvalues()の追加、削除、包含、サイズの一定の時間を与える実装はありますか?