From 039f7f71e049029ab71a6d6c60d2eed5f95e5795 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 16 Feb 2017 09:35:10 -0500 Subject: Update --- .../main/java/bjc/utils/data/CircularIterator.java | 31 +++++++++++++++ .../src/main/java/bjc/utils/esodata/Tape.java | 44 ++++++++++++++++++++++ .../java/bjc/utils/funcdata/FunctionalList.java | 5 ++- .../main/java/bjc/utils/funcdata/SentryList.java | 22 +++++++++++ .../main/java/bjc/utils/funcutils/ListUtils.java | 8 ++-- 5 files changed, 105 insertions(+), 5 deletions(-) create mode 100644 BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java create mode 100644 BJC-Utils2/src/main/java/bjc/utils/esodata/Tape.java create mode 100644 BJC-Utils2/src/main/java/bjc/utils/funcdata/SentryList.java (limited to 'BJC-Utils2/src/main') 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 implements Iterator { + private Iterable source; + private Iterator curr; + + public CircularIterator(Iterable 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 { + private ArrayList 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 implements Cloneable, IList { StringBuilder sb = new StringBuilder("("); Iterator 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 extends FunctionalList { + public SentryList() { + super(); + } + + public SentryList(List 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 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(); -- cgit v1.2.3