-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRoadGraph.java
143 lines (127 loc) · 3.35 KB
/
RoadGraph.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
RoadGraph.java
Author: Shreyas Jayanna
Version 1
Date: 05/15/2015
*/
// Import statements
import java.util.HashMap;
/**
* Class RoadGraph. This class defines a road network as a graph
*/
public class RoadGraph {
HashMap<String,MyNode> nodes;
HashMap<String,MyEdge> edges;
/**
* Default Constructor
*/
public RoadGraph() {
this.nodes = new HashMap<String, MyNode>();
this.edges = new HashMap<String, MyEdge>();
}
/**
* Constructor
* @param graph RoadGraph object
*/
public RoadGraph(RoadGraph graph) {
this();
this.nodes.putAll(graph.getNodes());
this.edges.putAll(graph.getEdges());
}
/**
* This method sets the nodes hashmap
* @param nodes Nodes hashmap
*/
public void setNodes(HashMap<String, MyNode> nodes) {
this.nodes = nodes;
}
/**
* This method returns the nodes hashmap
* @return Nodes hashmap
*/
public HashMap<String, MyNode> getNodes() {
return this.nodes;
}
/**
* This method returns the edges hashmap
* @return Edges hashmap
*/
public HashMap<String, MyEdge> getEdges() {
return this.edges;
}
/**
* This method adds a node
* @param node Node object
* @return True if add successful
*/
public boolean addNode(MyNode node) {
if(this.nodes.put(node.getId(), node) != null)
return true;
return false;
}
/**
* This method returns the number of nodes in the road graph
* @return Number of nodes
*/
public int getNumNodes() {
return this.nodes.size();
}
/**
* This method removes a node from the road graph
* @param id ID of the node to be removed
* @return True if the remove was successful
*/
public boolean removeNode(String id) {
if(this.nodes.remove(id) != null)
return true;
return false;
}
/**
* This method removes node from the road graph
* @param node Node to be removed
* @return True if remove was successful
*/
public boolean removeNode(MyNode node) {
if(this.nodes.containsValue(node)) {
for(MyNode myNode : node.getNeighborNodes()) {
myNode.getNeighborNodes().remove(node);
}
if(this.nodes.remove(node.getId()) != null)
return true;
}
return false;
}
/**
* This method sets the edges hashmap to the passed hashmap
* @param edges Edges hashmap
*/
public void setEdges(HashMap<String, MyEdge> edges) {
this.edges = edges;
}
/**
* This method adds an edge
* @param myEdge Edge
* @return True if add was successful
*/
public boolean addEdge(MyEdge myEdge) {
if(this.edges.put(myEdge.getId(), myEdge) != null) {
return true;
}
return false;
}
/**
* This method returns the number of edges
* @return Number of edges
*/
public int getNumEdges() {
return this.edges.size();
}
/**
* This method removes an edge from the road graph
* @param edge Edge to be removed from the graph
*/
public void removeEdge(MyEdge edge) {
String id = edge.getId();
this.edges.remove(id);
}
}