summaryrefslogtreecommitdiff
path: root/src/com.example.portfolio3/com/example/portfolio3/AbstractGraph.java
blob: 793260aa7e5eea71b447f0720f64c182c48c933c (plain)
  1. package com.example.portfolio3;
  2. // origin: <https://moodle.ruc.dk/course/section.php?id=211877>
  3. import java.util.Collection;
  4. import java.util.HashMap;
  5. import java.util.HashSet;
  6. /// foo
  7. public abstract class AbstractGraph implements Graph {
  8. /// foo
  9. AbstractGraph() { }
  10. /// foo
  11. private HashMap<String,Vertex> vertexMap = new HashMap<>();
  12. /// foo
  13. private HashSet<Vertex> vertexSet = new HashSet<>();
  14. /// foo
  15. /// @param s foo
  16. /// @return Vertex
  17. public Vertex vertex(final String s) {
  18. if (vertexMap.containsKey(s))
  19. return vertexMap.get(s);
  20. Vertex v = new Vertex(s);
  21. vertexMap.put(s, v);
  22. vertexSet.add(v);
  23. return v;
  24. }
  25. /// foo
  26. public void insertEdge(final String v, final String u, final int w) {
  27. insertEdge(vertex(v), vertex(u), w);
  28. }
  29. /// foo
  30. public Collection<Vertex> vertices() {
  31. return vertexSet;
  32. }
  33. /// foo
  34. /// @param v1 foo
  35. /// @param v2 foo
  36. /// @param w foo
  37. abstract public void insertEdge(Vertex v1, Vertex v2, int w);
  38. /// foo
  39. abstract public Collection<Edge> edges();
  40. /// foo
  41. abstract public Collection<Edge> outEdge(Vertex v);
  42. /// foo
  43. abstract public Integer getWeight(Vertex v1, Vertex v2);
  44. }