summaryrefslogtreecommitdiff
path: root/RGens/src/main
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2016-03-31 14:21:49 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2016-03-31 14:21:49 -0400
commit7b9cd884a0447aa1ab58bfec4f801ee2b5153b19 (patch)
treec5b4a83ea5b05b47fe11ae8a79f8059b555a2e3b /RGens/src/main
parentadde01c0dbe772a5991a25053c4ac8a1c54ec1ed (diff)
Code maintenance changes
Diffstat (limited to 'RGens/src/main')
-rw-r--r--RGens/src/main/java/bjc/RGens/ZadronsPouch.java28
-rw-r--r--RGens/src/main/java/bjc/RGens/parser/GrammarReader.java22
-rw-r--r--RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java8
-rw-r--r--RGens/src/main/java/bjc/RGens/parser/GrammarReaderCLI.java4
-rw-r--r--RGens/src/main/java/bjc/RGens/parser/RBGrammarReader.java20
-rw-r--r--RGens/src/main/java/bjc/RGens/parser/ReaderState.java2
-rwxr-xr-xRGens/src/main/java/bjc/RGens/text/markov/FrequencyCounter.java4
-rw-r--r--RGens/src/main/java/bjc/RGens/text/markov/MyEntry.java71
-rwxr-xr-xRGens/src/main/java/bjc/RGens/text/markov/MyHashMap.java347
-rw-r--r--RGens/src/main/java/bjc/RGens/text/markov/MyIterator.java84
-rwxr-xr-xRGens/src/main/java/bjc/RGens/text/markov/SuffixCounter.java8
-rwxr-xr-xRGens/src/main/java/bjc/RGens/text/markov/TextGenerator.java8
12 files changed, 60 insertions, 546 deletions
diff --git a/RGens/src/main/java/bjc/RGens/ZadronsPouch.java b/RGens/src/main/java/bjc/RGens/ZadronsPouch.java
index 240e967..742f0f3 100644
--- a/RGens/src/main/java/bjc/RGens/ZadronsPouch.java
+++ b/RGens/src/main/java/bjc/RGens/ZadronsPouch.java
@@ -4,12 +4,25 @@ import bjc.utils.funcdata.FunctionalStringTokenizer;
import bjc.utils.funcdata.FunctionalList;
import bjc.utils.gen.RandomGrammar;
+/**
+ * Example showing code manipulate of random grammars
+ *
+ * @author ben
+ *
+ */
public class ZadronsPouch {
+ /**
+ * Main method for running application
+ *
+ * @param args
+ * Unused CLI args
+ */
public static void main(String[] args) {
ZadronsPouch zp = new ZadronsPouch();
for (int i = 0; i < 100; i++) {
- FunctionalList<String> ls = zp.wg.genList("<item>", " ");
+ FunctionalList<String> ls = zp.grammar
+ .generateListValues("<item>", " ");
StringBuilder sb = new StringBuilder();
@@ -17,16 +30,15 @@ public class ZadronsPouch {
System.out.println(sb.toString().replaceAll("\\s+", " "));
}
-
- System.out.println();
- System.out.println();
- System.out.println();
}
- private RandomGrammar<String> wg;
+ private RandomGrammar<String> grammar;
+ /**
+ * Create a new instance with a grammar
+ */
public ZadronsPouch() {
- wg = new RandomGrammar<>();
+ grammar = new RandomGrammar<>();
addRule("<item>", "<egg>", "<glove>", "<crys-sphere>", "<rock>",
"<figurine>", "<vial>", "<mini-weapon>", "<bag>", "<card>",
@@ -150,7 +162,7 @@ public class ZadronsPouch {
.toList(s -> s));
}
- wg.makeRule(rule, cses);
+ grammar.makeRule(rule, cses);
}
private void addVialRules() {
diff --git a/RGens/src/main/java/bjc/RGens/parser/GrammarReader.java b/RGens/src/main/java/bjc/RGens/parser/GrammarReader.java
index c325ac1..496cd30 100644
--- a/RGens/src/main/java/bjc/RGens/parser/GrammarReader.java
+++ b/RGens/src/main/java/bjc/RGens/parser/GrammarReader.java
@@ -9,9 +9,9 @@ import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.function.BiConsumer;
+import bjc.utils.exceptions.UnknownPragmaException;
import bjc.utils.funcdata.FunctionalStringTokenizer;
import bjc.utils.gen.WeightedGrammar;
-import bjc.utils.parserutils.UnknownPragmaException;
public class GrammarReader {
private static Map<String, BiConsumer<StringTokenizer, ReaderState>> actMap;
@@ -52,7 +52,7 @@ public class GrammarReader {
private static void debugGrammar(StringTokenizer stk, ReaderState rs) {
System.out.println("Printing rule names: ");
- for (String rul : rs.getRules().ruleNames()) {
+ for (String rul : rs.getRules().getRuleNames()) {
System.out.println("\t" + rul);
}
@@ -89,7 +89,7 @@ public class GrammarReader {
private static void editSubGrammar(StringTokenizer stk,
ReaderState rs) {
String sgName = stk.nextToken();
- rs.pushGrammar(rs.getRules().getSubGrammar(sgName));
+ rs.pushGrammar(rs.getRules().getSubgrammar(sgName));
}
public static WeightedGrammar<String> fromStream(InputStream is) {
@@ -156,7 +156,7 @@ public class GrammarReader {
String fName = stk.nextToken();
try {
- rs.getRules().addSubGrammar(sgName,
+ rs.getRules().addSubgrammar(sgName,
fromStream(new FileInputStream(fName)));
} catch (FileNotFoundException e) {
throw new PragmaErrorException("Could not load subgrammar "
@@ -188,29 +188,29 @@ public class GrammarReader {
String gName = stk.nextToken();
String rName = stk.nextToken();
- WeightedGrammar<String> nwg = rs.getRules().getSubGrammar(gName);
- rs.getRules().removeSubgrammar(gName);
+ WeightedGrammar<String> nwg = rs.getRules().getSubgrammar(gName);
+ rs.getRules().deleteSubgrammar(gName);
- nwg.addSubGrammar(rName, rs.getRules());
+ nwg.addSubgrammar(rName, rs.getRules());
rs.setRules(nwg);
}
private static void removeRule(StringTokenizer stk, ReaderState rs) {
String rName = stk.nextToken();
- rs.getRules().removeRule(rName);
+ rs.getRules().deleteRule(rName);
}
private static void removeSubGrammar(StringTokenizer stk,
ReaderState rs) {
String sgName = stk.nextToken();
- rs.getRules().removeSubgrammar(sgName);
+ rs.getRules().deleteSubgrammar(sgName);
}
private static void saveGrammar(StringTokenizer stk, ReaderState rs) {
String sgName = stk.nextToken();
WeightedGrammar<String> sg = rs.popGrammar();
- rs.getRules().addSubGrammar(sgName, sg);
+ rs.getRules().addSubgrammar(sgName, sg);
}
private static void subordinateGrammar(StringTokenizer stk,
@@ -218,7 +218,7 @@ public class GrammarReader {
String gName = stk.nextToken();
WeightedGrammar<String> nwg = new WeightedGrammar<>();
- nwg.addSubGrammar(gName, rs.getRules());
+ nwg.addSubgrammar(gName, rs.getRules());
rs.setRules(nwg);
}
diff --git a/RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java b/RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java
index 28f1587..8adaa62 100644
--- a/RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java
+++ b/RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java
@@ -40,13 +40,13 @@ public class GrammarReaderApp {
String initRule = "";
- if (!wg.hasInitRule()) {
+ if (!wg.hasInitialRule()) {
initRule = SimpleDialogs.getChoice(null, "Pick a initial rule",
"Pick a initial rule to generate choices from",
- wg.ruleNames().stream().sorted()
+ wg.getRuleNames().stream().sorted()
.toArray(String[]::new));
} else {
- initRule = wg.getInitRule();
+ initRule = wg.getInitialRule();
}
int count = SimpleDialogs.getWhole(null,
@@ -65,7 +65,7 @@ public class GrammarReaderApp {
}
for (int i = 0; i < count; i++) {
- String s = wg.genList(initRule, " ")
+ String s = wg.generateListValues(initRule, " ")
.reduceAux(new StringBuilder(),
(strang, strangBuilder) -> strangBuilder
.append(strang),
diff --git a/RGens/src/main/java/bjc/RGens/parser/GrammarReaderCLI.java b/RGens/src/main/java/bjc/RGens/parser/GrammarReaderCLI.java
index a40d622..f782c5f 100644
--- a/RGens/src/main/java/bjc/RGens/parser/GrammarReaderCLI.java
+++ b/RGens/src/main/java/bjc/RGens/parser/GrammarReaderCLI.java
@@ -29,7 +29,7 @@ public class GrammarReaderCLI {
}
if (rName.equalsIgnoreCase("--list-rules")) {
- for (String rn : wg.ruleNames()) {
+ for (String rn : wg.getRuleNames()) {
System.out.println(rn);
}
System.exit(0);
@@ -38,7 +38,7 @@ public class GrammarReaderCLI {
int rCount = Integer.parseInt(args[2]);
for (int i = 0; i < rCount; i++) {
- String s = wg.genList(rName, " ")
+ String s = wg.generateListValues(rName, " ")
.reduceAux(new StringBuilder(),
(strang, strangBuilder) -> strangBuilder
.append(strang),
diff --git a/RGens/src/main/java/bjc/RGens/parser/RBGrammarReader.java b/RGens/src/main/java/bjc/RGens/parser/RBGrammarReader.java
index c319d12..86079ac 100644
--- a/RGens/src/main/java/bjc/RGens/parser/RBGrammarReader.java
+++ b/RGens/src/main/java/bjc/RGens/parser/RBGrammarReader.java
@@ -42,7 +42,7 @@ public class RBGrammarReader {
private static void debugGrammar(StringTokenizer stk, ReaderState rs) {
System.out.println("Printing rule names: ");
- for (String rul : rs.getRules().ruleNames()) {
+ for (String rul : rs.getRules().getRuleNames()) {
System.out.println("\t" + rul);
}
@@ -63,7 +63,7 @@ public class RBGrammarReader {
private static void editSubGrammar(StringTokenizer stk,
ReaderState rs) {
String sgName = stk.nextToken();
- rs.pushGrammar(rs.getRules().getSubGrammar(sgName));
+ rs.pushGrammar(rs.getRules().getSubgrammar(sgName));
}
public static WeightedGrammar<String> fromStream(InputStream is) {
@@ -135,7 +135,7 @@ public class RBGrammarReader {
String fName = stk.nextToken();
try {
- rs.getRules().addSubGrammar(sgName,
+ rs.getRules().addSubgrammar(sgName,
fromStream(new FileInputStream(fName)));
} catch (FileNotFoundException e) {
throw new PragmaErrorException("Could not load subgrammar "
@@ -167,29 +167,29 @@ public class RBGrammarReader {
String gName = stk.nextToken();
String rName = stk.nextToken();
- WeightedGrammar<String> nwg = rs.getRules().getSubGrammar(gName);
- rs.getRules().removeSubgrammar(gName);
+ WeightedGrammar<String> nwg = rs.getRules().getSubgrammar(gName);
+ rs.getRules().deleteSubgrammar(gName);
- nwg.addSubGrammar(rName, rs.getRules());
+ nwg.addSubgrammar(rName, rs.getRules());
rs.setRules(nwg);
}
private static void removeRule(StringTokenizer stk, ReaderState rs) {
String rName = stk.nextToken();
- rs.getRules().removeRule(rName);
+ rs.getRules().deleteRule(rName);
}
private static void removeSubGrammar(StringTokenizer stk,
ReaderState rs) {
String sgName = stk.nextToken();
- rs.getRules().removeSubgrammar(sgName);
+ rs.getRules().deleteSubgrammar(sgName);
}
private static void saveGrammar(StringTokenizer stk, ReaderState rs) {
String sgName = stk.nextToken();
WeightedGrammar<String> sg = rs.popGrammar();
- rs.getRules().addSubGrammar(sgName, sg);
+ rs.getRules().addSubgrammar(sgName, sg);
}
private static void subordinateGrammar(StringTokenizer stk,
@@ -197,7 +197,7 @@ public class RBGrammarReader {
String gName = stk.nextToken();
WeightedGrammar<String> nwg = new WeightedGrammar<>();
- nwg.addSubGrammar(gName, rs.getRules());
+ nwg.addSubgrammar(gName, rs.getRules());
rs.setRules(nwg);
}
diff --git a/RGens/src/main/java/bjc/RGens/parser/ReaderState.java b/RGens/src/main/java/bjc/RGens/parser/ReaderState.java
index 3e25741..50be322 100644
--- a/RGens/src/main/java/bjc/RGens/parser/ReaderState.java
+++ b/RGens/src/main/java/bjc/RGens/parser/ReaderState.java
@@ -55,6 +55,6 @@ public class ReaderState {
}
public void setInitialRule(String rName) {
- wg.peek().setInitRule(rName);
+ wg.peek().setInitialRule(rName);
}
}
diff --git a/RGens/src/main/java/bjc/RGens/text/markov/FrequencyCounter.java b/RGens/src/main/java/bjc/RGens/text/markov/FrequencyCounter.java
index 6009828..abe1c8c 100755
--- a/RGens/src/main/java/bjc/RGens/text/markov/FrequencyCounter.java
+++ b/RGens/src/main/java/bjc/RGens/text/markov/FrequencyCounter.java
@@ -24,7 +24,7 @@ public class FrequencyCounter {
Scanner s = new Scanner(System.in);
text = s.nextLine();
- MyHashMap<String, Integer> hash = new MyHashMap<String, Integer>();
+ Map<String, Integer> hash = new HashMap<String, Integer>();
int distinct = 0;
for (int i = 0; i <= text.length() - k; i++) {
@@ -46,7 +46,7 @@ public class FrequencyCounter {
System.out.println(distinct + " distinct keys");
- Iterator<String> keys = hash.keys();
+ Iterator<String> keys = hash.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
diff --git a/RGens/src/main/java/bjc/RGens/text/markov/MyEntry.java b/RGens/src/main/java/bjc/RGens/text/markov/MyEntry.java
deleted file mode 100644
index c33fa18..0000000
--- a/RGens/src/main/java/bjc/RGens/text/markov/MyEntry.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package bjc.RGens.text.markov;
-
-/**
- * Represents a key, value pairing.
- *
- * @author Daniel Friedman
- *
- */
-public class MyEntry<K, V> {
- protected K key;
- protected V value;
-
- @Override
- /**
- * Gives the hashcode of a MyEntry object.
- *
- * @return the hashcode of the MyEntry's key.
- */
- public int hashCode() {
- return key.hashCode();
- }
-
- /**
- * Tests whether this object is equivalent to a specified other.
- *
- * @param obj
- * the other object.
- * @return true if the keys are equivalent.
- */
- @SuppressWarnings("unchecked")
- @Override
- public boolean equals(Object obj) {
- boolean ret = false;
-
- if (obj == null) {
- ret = false;
- }
-
- MyEntry<K, V> other = (MyEntry<K, V>) obj;
-
- if (key.equals(other.key)) {
- ret = true;
- }
-
- return ret;
- }
-
- /**
- * Constructs a MyEntry object with given key and value.
- *
- * @param key
- * the key to be stored.
- * @param value
- * the value to be stored.
- * @param myHashMap
- * TODO
- */
- public MyEntry(K key, V value) {
- this.key = key;
- this.value = value;
- }
-
- /**
- * Gives a String representation of this object.
- *
- * @return the String representation.
- */
- public String toString() {
- return "(" + key + ", " + value + ")";
- }
-} \ No newline at end of file
diff --git a/RGens/src/main/java/bjc/RGens/text/markov/MyHashMap.java b/RGens/src/main/java/bjc/RGens/text/markov/MyHashMap.java
deleted file mode 100755
index 10158ea..0000000
--- a/RGens/src/main/java/bjc/RGens/text/markov/MyHashMap.java
+++ /dev/null
@@ -1,347 +0,0 @@
-package bjc.RGens.text.markov;
-
-import java.util.*;
-
-/**
- * A Hash table implementation. Uses an array of LinkedList<MyEntry> as
- * backing storage.
- *
- * @author Daniel Friedman
- *
- * @param <K>
- * generic type for Keys.
- * @param <V>
- * generic type for Values.
- */
-
-public class MyHashMap<K, V> {
- private int size;
- private float loadFactor;
-
- LinkedList<MyEntry<K, V>> table[];
- private ArrayList<Integer> primes = new ArrayList<Integer>();
-
- /**
- * Constructs a new MyHashMap object.
- *
- * @param capacity
- * the size of the array.
- * @param loadFactor
- * the specified load factor. The array will resize when the
- * load factor is reached.
- */
- @SuppressWarnings("unchecked")
- public MyHashMap(int capacity, float loadFactor) {
- table = (LinkedList<MyEntry<K, V>>[]) new LinkedList[capacity];
-
- this.loadFactor = loadFactor;
-
- for (int i = 0; i < table.length; i++) {
- table[i] = new LinkedList<MyEntry<K, V>>();
- }
- }
-
- /**
- * Constructs a MyHashMap with capacity 11 and load factor 0.75.
- */
- public MyHashMap() {
- this(11, (float) 0.75);
-
- primes.add(11);
- primes.add(23);
- primes.add(47);
- primes.add(97);
- primes.add(197);
- primes.add(397);
- primes.add(797);
- primes.add(1597);
- primes.add(3203);
- primes.add(6421);
- primes.add(12853);
- primes.add(25717);
- primes.add(51437);
- primes.add(102877);
- primes.add(205759);
- primes.add(411527);
- primes.add(823117);
- primes.add(1646237);
- primes.add(3292489);
- primes.add(6584983);
- primes.add(13169977);
- primes.add(26339969);
- primes.add(52679969);
- primes.add(105359939);
- primes.add(210719881);
- primes.add(421439783);
- primes.add(842879579);
- primes.add(1685759167);
- }
-
- /**
- * Gives the number of MyEntries in the array.
- *
- * @return number of MyEntry objects in the array.
- */
- public int size() {
- return size;
- }
-
- /**
- * Tests whether or not the array is empty.
- *
- * @return true if empty, false otherwise.
- */
- public boolean isEmpty() {
- if (size == 0) {
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * Removes all objects from the array.
- */
- public void clear() {
- for (int i = 0; i < table.length; i++) {
- table[i].clear();
- }
- }
-
- /**
- * Gives a String representation of the array.
- *
- * @return said String representation.
- */
- public String toString() {
- String ret = "";
-
- for (int i = 0; i < table.length; i++) {
- ret += ("Bucket " + i + ": " + table[i] + "\n");
- }
-
- return ret;
- }
-
- /**
- * Adds a key, value mapping to the array. If the key already is
- * contained, the value will be updated.
- *
- * @param key
- * the key to be added.
- * @param value
- * the value to be added.
- * @return the previous value if the key already was contained, null
- * otherwise.
- */
- public V put(K key, V value) {
- MyEntry<K, V> entry = new MyEntry<K, V>(key, value);
-
- int hashCode = Math.abs(key.hashCode());
- int mapping = hashCode % (table.length);
-
- LinkedList<MyEntry<K, V>> bucket = table[mapping];
-
- V ret = null;
-
- if (bucket.contains(entry)) {
- int index = bucket.indexOf(entry);
-
- ret = bucket.get(index).value;
- bucket.set(index, entry);
- } else {
- bucket.add(entry);
- }
-
- size++;
-
- if ((double) size / (double) table.length >= loadFactor) {
- resize();
- }
-
- return ret;
- }
-
- /**
- * Gives the value associated with a specified key.
- *
- * @param key
- * the specified key.
- * @return the value associated. Null if the key is not found.
- */
- public V get(K key) {
- V ret = null;
-
- int hashCode = Math.abs(key.hashCode());
- int mapping = hashCode % (table.length);
-
- LinkedList<MyEntry<K, V>> bucket = table[mapping];
-
- for (int i = 0; i < bucket.size(); i++) {
- MyEntry<K, V> cur = bucket.get(i);
-
- if (cur.key.equals(key)) {
- ret = cur.value;
- }
- }
- return ret;
- }
-
- /**
- * Removes a specified object from the array.
- *
- * @param key
- * the key corresponding to the MyEntry to be removed.
- * @return the value associated with the removed key.
- */
- public V remove(K key) {
- V ret = null;
-
- int hashCode = Math.abs(key.hashCode());
- int mapping = hashCode % (table.length);
-
- LinkedList<MyEntry<K, V>> bucket = table[mapping];
-
- for (int i = 0; i < bucket.size(); i++) {
- MyEntry<K, V> cur = bucket.get(i);
-
- if (cur.key.equals(key)) {
- ret = cur.value;
- bucket.remove(cur);
- }
- }
-
- size--;
- return ret;
- }
-
- /**
- * Finds whether or not the array contains a given key.
- *
- * @param key
- * the key to be tested.
- * @return true if found, false if not.
- */
- public boolean containsKey(K key) {
- boolean ret = false;
-
- int hashCode = Math.abs(key.hashCode());
- int mapping = hashCode % (table.length);
-
- LinkedList<MyEntry<K, V>> bucket = table[mapping];
- MyEntry<K, V> test = new MyEntry<K, V>(key, null);
-
- if (bucket.contains(test)) {
- ret = true;
- }
-
- return ret;
- }
-
- /**
- * Finds whether or not the array contains a given value.
- *
- * @param value
- * the value to be tested.
- * @return true if found, false if not.
- */
- public boolean containsValue(V value) {
- boolean ret = false;
-
- for (int i = 0; i < table.length; i++) {
- LinkedList<MyEntry<K, V>> bucket = table[i];
-
- for (int j = 0; j < bucket.size(); j++) {
- MyEntry<K, V> entry = bucket.get(j);
-
- if (entry.value.equals(value))
- ret = true;
- }
- }
- return ret;
- }
-
- /**
- * Iterates over the MyEntry objects in the array, looking at their
- * keys.
- *
- * @return a keys iterator.
- */
- public Iterator<K> keys() {
- return new MyIterator<K, V>(this);
- }
-
- /**
- * Resizes the array to the next largest prime number that is at least
- * double the current array size.
- */
- public void resize() {
- MyHashMap<K, V> tmp = new MyHashMap<K, V>(helper(table.length),
- (float) 0.75);
- Iterator<K> it = keys();
-
- while (it.hasNext()) {
- K key = it.next();
- V value = get(key);
- tmp.put(key, value);
- }
-
- this.table = tmp.table;
- this.size = tmp.size;
- this.loadFactor = tmp.loadFactor;
- }
-
- /**
- * Gives the next largest prime number that is at least double the
- * current array size.
- *
- * @param i
- * @return
- */
- public int helper(int i) {
- int ret = -1;
-
- for (int j = 0; j < primes.size(); j++) {
- if (primes.get(j) > i) {
- ret = primes.get(j);
- break;
- }
- }
-
- return ret;
- }
-
- /**
- * Tests the MyHashMap class and its methods.
- *
- */
- public static void main(String[] args) {
- // test1:
- /*
- * MyHashMap<String, Integer> testMap = new MyHashMap<String,
- * Integer>();
- *
- * System.out.println("HashMap size: "+testMap.size());
- * System.out.println("HashMap capacity: "+testMap.table.length);
- * System.out.println("HashMap Load Factor: "+testMap.loadFactor);
- * System.out.println("HashMap isEmpty? "+testMap.isEmpty());
- * System.out.println("HashMap toString: "+testMap);
- */
-
- // test2:
- MyHashMap<String, Integer> testMap = new MyHashMap<String, Integer>();
-
- for (int i = 0; i < 100; i++) {
- testMap.put("" + i, i);
- System.out.println("Hashtable:");
- System.out.println(testMap);
- }
-
- for (int i = 0; i < 100; i++) {
- String key = "" + i;
- System.out.println("Removing key " + key + ":");
- testMap.remove(key);
- System.out.println(testMap);
- }
- }
-}
diff --git a/RGens/src/main/java/bjc/RGens/text/markov/MyIterator.java b/RGens/src/main/java/bjc/RGens/text/markov/MyIterator.java
deleted file mode 100644
index bb6d0d9..0000000
--- a/RGens/src/main/java/bjc/RGens/text/markov/MyIterator.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package bjc.RGens.text.markov;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.NoSuchElementException;
-
-public class MyIterator<K, V> implements Iterator<K> {
- private final MyHashMap<K, V> attachedMap;
-
- public MyIterator(MyHashMap<K, V> myHashMap) {
- attachedMap = myHashMap;
- bucket = attachedMap.table[bucketIndex];
- }
-
- int bucketIndex = 0;
-
- LinkedList<MyEntry<K, V>> bucket;
- Iterator<MyEntry<K, V>> listIt = bucket.iterator();
-
- MyEntry<K, V> cur;
-
- /**
- * Finds whether or not there is a next MyEntry object in the array.
- *
- * @return
- */
- @Override
- public boolean hasNext() {
- if (listIt.hasNext()) {
- return true;
- } else if (bucketIndex == (attachedMap.table.length - 1)) {
- return false;
- } else {
- for (int i = bucketIndex
- + 1; i < attachedMap.table.length; i++) {
- if (!attachedMap.table[i].isEmpty()) {
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * Gives the key associated with the next MyEntry object in the array.
- * Throws a NoSuchElementException if the array has been completely
- * iterated.
- *
- * @return the key associated with the next MyEntry object.
- */
- @Override
- public K next() {
- K ret = null;
-
- if (listIt.hasNext()) {
- cur = listIt.next();
- ret = cur.key;
- } else if (hasNext()) {
- for (int i = bucketIndex
- + 1; i < attachedMap.table.length; i++) {
- if (!attachedMap.table[i].isEmpty()) {
- bucketIndex = i;
-
- bucket = attachedMap.table[bucketIndex];
- listIt = bucket.iterator();
- cur = listIt.next();
-
- ret = cur.key;
- break;
- }
- }
- } else
- throw new NoSuchElementException("All buckets iterated.");
- return ret;
- }
-
- /**
- * Removes the current MyEntry.
- */
- @Override
- public void remove() {
- bucket.remove(cur);
- }
-} \ No newline at end of file
diff --git a/RGens/src/main/java/bjc/RGens/text/markov/SuffixCounter.java b/RGens/src/main/java/bjc/RGens/text/markov/SuffixCounter.java
index 67a8d01..0a8034b 100755
--- a/RGens/src/main/java/bjc/RGens/text/markov/SuffixCounter.java
+++ b/RGens/src/main/java/bjc/RGens/text/markov/SuffixCounter.java
@@ -1,6 +1,8 @@
package bjc.RGens.text.markov;
+import java.util.HashMap;
import java.util.Iterator;
+import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
@@ -25,7 +27,7 @@ public class SuffixCounter {
Scanner s = new Scanner(System.in);
text = s.nextLine();
- MyHashMap<String, Markov> hash = new MyHashMap<String, Markov>();
+ Map<String, Markov> hash = new HashMap<String, Markov>();
int distinct = 0;
@@ -57,7 +59,7 @@ public class SuffixCounter {
}
System.out.println(distinct + " distinct keys");
- Iterator<String> keys = hash.keys();
+ Iterator<String> keys = hash.keySet().iterator();
while (keys.hasNext()) {
String hashKey = keys.next();
@@ -74,7 +76,7 @@ public class SuffixCounter {
System.out.println();
}
-
+
s.close();
}
}
diff --git a/RGens/src/main/java/bjc/RGens/text/markov/TextGenerator.java b/RGens/src/main/java/bjc/RGens/text/markov/TextGenerator.java
index d347179..8c8bf57 100755
--- a/RGens/src/main/java/bjc/RGens/text/markov/TextGenerator.java
+++ b/RGens/src/main/java/bjc/RGens/text/markov/TextGenerator.java
@@ -52,9 +52,10 @@ public class TextGenerator {
} catch (FileNotFoundException e) {
System.out.println("File not found.");
e.printStackTrace();
+ System.exit(1);
}
- MyHashMap<String, Markov> hash = new MyHashMap<String, Markov>();
+ Map<String, Markov> hash = new HashMap<String, Markov>();
Character next = null;
@@ -63,11 +64,12 @@ public class TextGenerator {
} catch (IOException e1) {
System.out.println("IOException in stepping through the file");
e1.printStackTrace();
+ System.exit(1);
}
StringBuilder origFileBuffer = new StringBuilder();
- while (Character.isDefined(next)) {
+ while (next != null && Character.isDefined(next)) {
Character.toString(next);
origFileBuffer.append(next);
@@ -121,7 +123,7 @@ public class TextGenerator {
}
if (hash.size() < 100) {
- Iterator<String> keys = hash.keys();
+ Iterator<String> keys = hash.keySet().iterator();
while (keys.hasNext()) {
String hashKey = keys.next();