aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/util/data_structures
diff options
context:
space:
mode:
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/util/data_structures')
-rw-r--r--src/uk/ac/ox/cs/pagoda/util/data_structures/Graph.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/util/data_structures/Graph.java b/src/uk/ac/ox/cs/pagoda/util/data_structures/Graph.java
new file mode 100644
index 0000000..4f454df
--- /dev/null
+++ b/src/uk/ac/ox/cs/pagoda/util/data_structures/Graph.java
@@ -0,0 +1,38 @@
1package uk.ac.ox.cs.pagoda.util.data_structures;
2
3import java.util.*;
4
5public class Graph<V> {
6
7 private final boolean isDirected;
8
9 private Map<V, Set<V>> outEdgesOf = new HashMap<>();
10 public Graph(boolean isDirected) {
11 this.isDirected = isDirected;
12 }
13
14 public Graph() {
15 this(false);
16 }
17 public void addNode(V v) {
18 if(!outEdgesOf.containsKey(v))
19 outEdgesOf.put(v, new HashSet<V>());
20 }
21
22 public void addEdge(V v, V u) {
23 addNode(v);
24 addNode(u);
25 outEdgesOf.get(v).add(u);
26
27 if(isDirected)
28 outEdgesOf.get(u).add(v);
29 }
30
31 public Iterator<V> getOutNeighbors(V v) {
32 return outEdgesOf.get(v).iterator();
33 }
34
35 public boolean isDirected() {
36 return isDirected;
37 }
38}