Мне нужно создать граф объектов, используя список смежности.
Я создал классы вершин и ребер, но я не мог управлять конструктором создания и базовыми c методами, такими как увеличение и удаление вершины из графа.
Я пробовал использовать HashMap и ArrayList, но могу согласиться с лучшими идеями.
public class Vertex { //for stations
String name; //name of stations
public Vertex(String name) {
this.name = name;
}
public String setName(String n) {
return name = n;
}
public String getName() {
return name;
}
}
public class Edge { //for roads
Vertex start;//source station
Vertex end;//destination station
String name;//name of road
public Edge(Vertex start, Vertex end, String name) {
this.start = start;
this.end = end;
this.name = name;
}
public Vertex setStart(Vertex s) {
return start = s;
}
public Vertex getStart() {
return start;
}
public Vertex setEnd(Vertex e) {
return end = e;
}
public Vertex getEnd() {
return end;
}
public String setName(String n) {
return name = n;
}
public String getName() {
return name;
}
}
import java.util.*;
public class Graph {
List<Vertex> vList;
List<Edge> eList = new ArrayList<>() ;
HashMap<String, ArrayList<Vertex>> adjacencylist;
public Graph() {
vList = new ArrayList<>();
adjacencylist = new HashMap<String, ArrayList<Vertex>>();
}
public Vertex insertVertex(String n) {
Vertex v = new Vertex(n);
vList.add(v);
return v;
}
public Edge insertEdge(Vertex s, Vertex f, String n) {
Edge e = new Edge(s, f, n);
eList.add(e);
return e;
}
}