aboutsummaryrefslogtreecommitdiff
path: root/src/com.example.portfolio3/com/example/portfolio3/AbstractGraph.java
blob: 9d356e8e07d21a53eaed2655abc36deeeb15ade1 (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 final Vertex vertex(final String s) {
  18. if (vertexMap.containsKey(s)) {
  19. return vertexMap.get(s);
  20. }
  21. Vertex v = new Vertex(s);
  22. vertexMap.put(s, v);
  23. vertexSet.add(v);
  24. return v;
  25. }
  26. /// foo
  27. public final void insertEdge(
  28. final String v, final String u, final int w
  29. ) {
  30. insertEdge(vertex(v), vertex(u), w);
  31. }
  32. /// foo
  33. public final Collection<Vertex> vertices() {
  34. return vertexSet;
  35. }
  36. /// foo
  37. /// @param v1 foo
  38. /// @param v2 foo
  39. /// @param w foo
  40. abstract public void insertEdge(Vertex v1, Vertex v2, int w);
  41. /// foo
  42. abstract public Collection<Edge> edges();
  43. /// foo
  44. abstract public Collection<Edge> outEdge(Vertex v);
  45. /// foo
  46. abstract public Integer getWeight(Vertex v1, Vertex v2);
  47. }