Skip to content
Snippets Groups Projects
AdjacencySet.java 1.79 KiB
Newer Older
Sondre.Bolland1's avatar
Sondre.Bolland1 committed
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;
Sondre.Bolland1's avatar
Sondre.Bolland1 committed

    public AdjacencySet() {
        vertices = new HashSet<>();
        adjacencyList = new HashMap<>();
Sondre.Bolland1's avatar
Sondre.Bolland1 committed
    }

    @Override
    public int size() {
        return vertices.size();
Sondre.Bolland1's avatar
Sondre.Bolland1 committed
    }

    @Override
    public Iterable<V> vertices() {
        return Collections.unmodifiableSet(vertices);
Sondre.Bolland1's avatar
Sondre.Bolland1 committed
    }

    @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);
Sondre.Bolland1's avatar
Sondre.Bolland1 committed
    }

    @Override
    public Set<V> neighbours(V node) {
        return Collections.unmodifiableSet(adjacencyList.get(node));
Sondre.Bolland1's avatar
Sondre.Bolland1 committed
    }

    @Override
    public String toString() {
        StringBuilder build = new StringBuilder();
        for (V node : adjacencyList.keySet()) {
            Set<V> nodeList = adjacencyList.get(node);
Sondre.Bolland1's avatar
Sondre.Bolland1 committed

            build.append(node);
            build.append(" --> ");
            build.append(nodeList);
            build.append("\n");
        }
        return build.toString();
    }

}