Grid.java 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package holeg.model;
  2. import java.util.*;
  3. public class Grid {
  4. private List<GridNode> nodes = new ArrayList<>();
  5. private Set<GridEdge> edges = new HashSet<>();
  6. private HashMap<GridNode, List<GridEdge>> edgesPerNode = new HashMap<>();
  7. public void addNode(GridNode node) {
  8. if (node == null)
  9. throw new IllegalArgumentException("node is null");
  10. nodes.add(node);
  11. }
  12. private void addEdgeToMap(GridNode node, GridEdge edge) {
  13. List<GridEdge> edges = edgesPerNode.getOrDefault(node, new ArrayList<>());
  14. edges.add(edge);
  15. edgesPerNode.put(node, edges);
  16. }
  17. public void addEdge(GridEdge edge) {
  18. if (edge == null)
  19. throw new IllegalArgumentException("edge is null");
  20. if (edges.contains(edge))
  21. return;
  22. edges.add(edge);
  23. addEdgeToMap(edge.getFrom(), edge);
  24. addEdgeToMap(edge.getTo(), edge);
  25. }
  26. public List<GridNode> getNodes() {
  27. return Collections.unmodifiableList(nodes);
  28. }
  29. public Set<GridEdge> getEdges() {
  30. return Collections.unmodifiableSet(edges);
  31. }
  32. public List<GridEdge> getEdges(GridNode node) {
  33. if (edgesPerNode.containsKey(node))
  34. return Collections.unmodifiableList(edgesPerNode.get(node));
  35. return Collections.emptyList();
  36. }
  37. }