summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2017-02-16 09:35:10 -0500
committerbculkin2442 <bjculkin@mix.wvu.edu>2017-02-16 09:35:10 -0500
commit039f7f71e049029ab71a6d6c60d2eed5f95e5795 (patch)
tree8d635a48670c7c24ffe1378ee70b367d1bd5953c /BJC-Utils2/src/main/java
parent1b8704ee52801aca190f89c6839098a9b0776e7c (diff)
Update
Diffstat (limited to 'BJC-Utils2/src/main/java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java31
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/esodata/Tape.java44
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcdata/FunctionalList.java5
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcdata/SentryList.java22
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcutils/ListUtils.java8
5 files changed, 105 insertions, 5 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java b/BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java
new file mode 100644
index 0000000..cce7521
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java
@@ -0,0 +1,31 @@
+package bjc.utils.data;
+
+import java.util.Iterator;
+
+public class CircularIterator<E> implements Iterator<E> {
+ private Iterable<E> source;
+ private Iterator<E> curr;
+
+ public CircularIterator(Iterable<E> src) {
+ source = src;
+ curr = source.iterator();
+ }
+
+ public boolean hasNext() {
+ // We always have something
+ return true;
+ }
+
+ public E next() {
+ if(curr.hasNext()) {
+ return curr.next();
+ } else {
+ curr = source.iterator();
+ return curr.next();
+ }
+ }
+
+ public void remove() {
+ curr.remove();
+ }
+}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/esodata/Tape.java b/BJC-Utils2/src/main/java/bjc/utils/esodata/Tape.java
new file mode 100644
index 0000000..4ead829
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/esodata/Tape.java
@@ -0,0 +1,44 @@
+package bjc.utils.esodata;
+
+import java.util.ArrayList;
+
+public class Tape<T> {
+ private ArrayList<T> backing;
+ private int pos;
+
+ public Tape() {
+ backing = new ArrayList<>();
+ }
+
+ public T item() {
+ return backing.get(pos);
+ }
+
+ public boolean left() {
+ if(pos == 0) return false;
+
+ pos -= 1;
+ return true;
+ }
+
+ public boolean left(int amt) {
+ if((pos - amt) < 0) return false;
+
+ pos -= amt;
+ return true;
+ }
+
+ public boolean right() {
+ if(pos == (backing.size() - 1)) return false;
+
+ pos += 1;
+ return true;
+ }
+
+ public boolean right(int amt) {
+ if((pos + amt) >= (backing.size() - 1)) return false;
+
+ pos += amt;
+ return true;
+ }
+}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/FunctionalList.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/FunctionalList.java
index 0374a1f..cda27b1 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/FunctionalList.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/FunctionalList.java
@@ -437,13 +437,14 @@ public class FunctionalList<E> implements Cloneable, IList<E> {
StringBuilder sb = new StringBuilder("(");
Iterator<E> itr = toIterable().iterator();
E itm = itr.next();
+ int i = 0;
if(lSize == 1) {
return "(" + itm + ")";
}
- for(int i = 0; itr.hasNext(); itm = itr.next()) {
- sb.append(itm.toString());
+ for(E item : toIterable()) {
+ sb.append(item.toString());
if(i < lSize-1) {
sb.append(", ");
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/SentryList.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/SentryList.java
new file mode 100644
index 0000000..49cb106
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/SentryList.java
@@ -0,0 +1,22 @@
+package bjc.utils.funcdata;
+
+import java.util.List;
+
+public class SentryList<T> extends FunctionalList<T> {
+ public SentryList() {
+ super();
+ }
+
+ public SentryList(List<T> backing) {
+ super(backing);
+ }
+
+ public boolean add(T item) {
+ boolean val = super.add(item);
+
+ if(val)
+ System.out.println("Added item (" + item + ") to list");
+
+ return val;
+ }
+}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcutils/ListUtils.java b/BJC-Utils2/src/main/java/bjc/utils/funcutils/ListUtils.java
index e640a2a..2f7b4fb 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcutils/ListUtils.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcutils/ListUtils.java
@@ -62,15 +62,17 @@ public class ListUtils {
} else {
StringBuilder state = new StringBuilder();
- Iterator<String> itr = input.toIterable().iterator();
String tok = "";
- for(int i = 1; itr.hasNext(); tok = itr.next()) {
- state.append(tok);
+ int i = 1;
+ for(String itm : input.toIterable()) {
+ state.append(itm);
if(i != input.getSize()) {
state.append(seperator);
}
+
+ i += 1;
}
return state.toString();