diff options
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java | 27 | ||||
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/data/Tree.java | 25 |
2 files changed, 46 insertions, 6 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 index cce7521..04a93fa 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java +++ b/BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java @@ -6,9 +6,19 @@ public class CircularIterator<E> implements Iterator<E> { private Iterable<E> source; private Iterator<E> curr; - public CircularIterator(Iterable<E> src) { + private E curElm; + + private boolean doCircle; + + public CircularIterator(Iterable<E> src, boolean circ) { source = src; curr = source.iterator(); + + doCircle = circ; + } + + public CircularIterator(Iterable<E> src) { + this(src, true); } public boolean hasNext() { @@ -17,12 +27,17 @@ public class CircularIterator<E> implements Iterator<E> { } public E next() { - if(curr.hasNext()) { - return curr.next(); - } else { - curr = source.iterator(); - return curr.next(); + if(!curr.hasNext()) { + if(doCircle) { + curr = source.iterator(); + } else { + return curElm; + } } + + curElm = curr.next(); + + return curElm; } public void remove() { diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/Tree.java b/BJC-Utils2/src/main/java/bjc/utils/data/Tree.java index b812650..c44eece 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/data/Tree.java +++ b/BJC-Utils2/src/main/java/bjc/utils/data/Tree.java @@ -300,4 +300,29 @@ public class Tree<ContainedType> implements ITree<ContainedType> { action.accept(data); } } + + public boolean equals(Object other) { + if(!(other instanceof Tree)) return false; + + Tree<ContainedType> otr = (Tree<ContainedType>) other; + + if(!otr.data.equals(data)) return false; + + if(children == null && otr.children == null) return true; + + if(children == null && otr.children != null) return false; + if(children != null && otr.children == null) return false; + + if(children.getSize() != otr.children.getSize()) return false; + + int childNo = 0; + + for(ITree<ContainedType> child : children) { + if(!otr.children.getByIndex(childNo).equals(child)) return false; + + childNo += 1; + } + + return true; + } } |
