package com.example.portfolio3; // origin: import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /// Adjecency List Graph - A map from vertices to set of outedges from the vertex public class AdjListGraph extends AbstractGraph { /// foo public AdjListGraph() { } /// foo private Map> outEdge = new HashMap<>(); /// foo public void insertEdge(final Vertex v1, final Vertex v2, final int w) { Edge e = new Edge(v1, v2, w); if (!outEdge.containsKey(e.from())) outEdge.put(e.from(), new HashSet()); outEdge.get(e.from()).add(e); } /// foo public Collection edges() { Set edges = new HashSet<>(); for (Vertex v: outEdge.keySet())edges.addAll(outEdge.get(v)); return edges; } /// foo public Collection outEdge(final Vertex v) { if (!outEdge.containsKey(v)) return new HashSet(); return outEdge.get(v); } /// foo public Integer getWeight(final Vertex v1, final Vertex v2) { // linear in number of outedges from vertices if (!outEdge.containsKey(v1)) return null; for (Edge e: outEdge.get(v1)) { if (e.to() == v2) return e.weight(); } return null; } }