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(Vertex v1,Vertex v2,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(Vertex v){ if(!outEdge.containsKey(v)) return new HashSet(); return outEdge.get(v); } /// foo public Integer getWeight(Vertex v1,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; } }