1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package holeg.model;
- import java.util.*;
- public class Grid {
- private List<GridNode> nodes = new ArrayList<>();
- private Set<GridEdge> edges = new HashSet<>();
- private HashMap<GridNode, List<GridEdge>> edgesPerNode = new HashMap<>();
- public void addNode(GridNode node) {
- if (node == null)
- throw new IllegalArgumentException("node is null");
- nodes.add(node);
- }
- private void addEdgeToMap(GridNode node, GridEdge edge) {
- List<GridEdge> edges = edgesPerNode.getOrDefault(node, new ArrayList<>());
- edges.add(edge);
- edgesPerNode.put(node, edges);
- }
- public void addEdge(GridEdge edge) {
- if (edge == null)
- throw new IllegalArgumentException("edge is null");
- if (edges.contains(edge))
- return;
- edges.add(edge);
- addEdgeToMap(edge.getFrom(), edge);
- addEdgeToMap(edge.getTo(), edge);
- }
- public List<GridNode> getNodes() {
- return Collections.unmodifiableList(nodes);
- }
- public Set<GridEdge> getEdges() {
- return Collections.unmodifiableSet(edges);
- }
- public List<GridEdge> getEdges(GridNode node) {
- if (edgesPerNode.containsKey(node))
- return Collections.unmodifiableList(edgesPerNode.get(node));
- return Collections.emptyList();
- }
- }
|