даже если они правильно добавлены.
Я предполагаю, что когда вы вызываете addEdge, например, addEdge("A", "B");
, мы можем предположить, что вы уже вызвали addNode("A")
и addNode("B")
.
Если это так, то проблема заключается в вашем addEdge
методе:
public void addEdge(String start, String end) {
this.vertices.forEach((e) -> {
if(e.label.equalsIgnoreCase(start)) {
e.adjNodeList.add(new Vertex(end));
}
});
}
Таким образом, учитывая addEdge("A", "B");
, этот код находитВаша уже добавленная начальная вершина "A" - но затем создает new Vertex
"B" БЕЗ поиска любой, которая, возможно, уже была добавлена.Эта новая вершина имеет пустой adjNodeList, который останется пустым.
Другими словами, вершина "B", на которую ссылаются из "A", отличается от экземпляра вершины "B", которая находится в * 1020.**
например, что-то вроде этого:
public Vertex fetchNode(String label) {
return this.vertices.stream()
.filter(v -> v.getLabel().equals(label))
.findAny()
.orElseGet( () -> {
Vertex newVertex = new Vertex(label));
this.vertices.add(newVertex);
return newVertex;
});
}
public void addEdge(String start, String end) {
this.vertices.forEach((e) -> {
if(e.label.equalsIgnoreCase(start)) {
e.adjNodeList.add(fetchNode(end));
}
});
}