私がそれをよく理解していれば、次のような「ノード」オブジェクトの表現が必要です。
1)値を保存できるため、後で適切なノードを検索できます
2) 定義済みのデータ構造を使用して、グラフの情報を保持します。
3) 検索アルゴリズムでの使用を許可します。
3 つの要求すべてを満たす単純なソリューションがあります。
public class Node {
// Add as many fields as you need to contain the node info
private String mName;
private int mArbitraryValue;
// Store the adjacent nodes in a list
private List<Node> mAdjacencyList;
//Define your constructors
public Node(String name, int arbitraryValue, List<Node> adjacencyList) {
mName = name;
mArbitraryValue = arbitraryValue;
mAdjacencyList = adjacencyList;
}
/* Add your methods here depending on the functionality that
you want to implement
*/
public String getName() {
return mName;
}
public int getArbitraryValue() {
return mArbitraryValue;
}
public List<Node> getNeighbors() {
return Collections.unmodifiableList(mAdjacencyList);
}
// Add setters if you want these values to be able to change
public boolean addNeighbor(Node n) {
return !mAdjacencyList.contains((Node) n) && mAdjacencyList.add(n);
}
public boolean removeNeighbor(Node n) {
return mAdjacencyList.remove((Node) n);
}
}
オブジェクトを変更できる場合、HashMap を使用して隣接リストを実装することはお勧めしません。セットが壊れる可能性があるためです (つまり、オブジェクトが存在する場合でも、contains() の呼び出しで false が返される可能性があります)。
これで、検索アルゴリズムはノードのメンバー変数にアクセスして、それらが完了したかどうかを確認できます。