package INF102.lab5.graph; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; public class AdjacencySet<V> implements IGraph<V> { private Set<V> vertices; private Map<V, Set<V>> adjacencyList; public AdjacencySet() { vertices = new HashSet<>(); adjacencyList = new HashMap<>(); } @Override public int size() { return vertices.size(); } @Override public Iterable<V> vertices() { return Collections.unmodifiableSet(vertices); } @Override public void addNode(V node) { throw new UnsupportedOperationException("Implement me :)"); } @Override public void removeNode(V node) { throw new UnsupportedOperationException("Implement me :)"); } @Override public void addEdge(V u, V v) { throw new UnsupportedOperationException("Implement me :)"); } @Override public void removeEdge(V u, V v) { throw new UnsupportedOperationException("Implement me :)"); } @Override public boolean hasNode(V node) { throw new UnsupportedOperationException("Implement me :)"); } @Override public boolean adjacent(V u, V v) { return adjacencyList.get(u).contains(v); } @Override public Set<V> neighbours(V node) { return Collections.unmodifiableSet(adjacencyList.get(node)); } @Override public String toString() { StringBuilder build = new StringBuilder(); for (V node : adjacencyList.keySet()) { Set<V> nodeList = adjacencyList.get(node); build.append(node); build.append(" --> "); build.append(nodeList); build.append("\n"); } return build.toString(); } }