У меня есть файл, который выглядит примерно так:
0,1
0,3
1,2
1,3
2,3
На основе этого файла я хотел бы генерировать графики, т.е. функция должна принимать имя файла и возвращать график.
Ожидаемый результат printGraph
(определенный ниже) будет выглядеть примерно так:
0 -> 1 -> 3
1 -> 2 -> 3
2 -> 3
Это код, который у меня сейчас есть:
class Graph1
ArrayList<Integer> [] adjacency_list;
public void addEdge(Map<Integer, Set<Integer>> adj,int u, int v) {
if (!adj.containsKey(u)) adj.put(u, new HashSet());
if (!adj.containsKey(v)) adj.put(v, new HashSet());
adj.get(u).add(v);
adj.get(v).add(u);
}
class Graph2
public static void read(String filename) {
AddEdge addEdge = new AddEdge();
Map<Integer, Set<Integer>> adj = new HashMap<>();
File input = new File("filename");
try {
Scanner reader = new Scanner(input); //read in the file
while (reader.hasNextLine()) {
String[] nums = reader.nextLine().split(", ");
addEdge.addEdge(adj, Integer.parseInt(nums[0]), Integer.parseInt(nums[1]));
}
printGraph(adj);
reader.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
static void printGraph(Map<Integer, Set<Integer>> adj) {
for (int u : adj.keySet()) {
System.out.println("\nAdjacency list of vertex" + u);
for (int v : adj.get(u)) {
System.out.print(" -> " + v);
}
System.out.println();
}
}