From 1a8376548d7d448e0d4e2373cf3308cc85c2c0bd Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Fri, 10 Feb 2017 08:40:36 -0500 Subject: Bugfixes/Simplification --- .../bjc/utils/funcutils/GroupPartIteration.java | 33 +++++++++++----------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java') diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java b/BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java index 229d271..798b6f1 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java +++ b/BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java @@ -18,45 +18,44 @@ import bjc.utils.funcdata.IList; final class GroupPartIteration implements Consumer { private IList> returnedList; - private IHolder> currentPartition; + public IList currentPartition; private IList rejectedItems; - private IHolder numberInCurrentPartition; + private int numberInCurrentPartition; private int numberPerPartition; private Function elementCounter; - public GroupPartIteration(IList> returned, - IHolder> currPart, IList rejects, - IHolder numInCurrPart, int nPerPart, - Function eleCount) { + public GroupPartIteration(IList> returned, IList rejects, + int nPerPart, Function eleCount) { this.returnedList = returned; - this.currentPartition = currPart; this.rejectedItems = rejects; - this.numberInCurrentPartition = numInCurrPart; this.numberPerPartition = nPerPart; this.elementCounter = eleCount; + + this.currentPartition = new FunctionalList<>(); + this.numberInCurrentPartition = 0; } @Override public void accept(E value) { - if (numberInCurrentPartition.unwrap((number) -> number >= numberPerPartition)) { - returnedList.add(currentPartition.unwrap((partition) -> partition)); + boolean shouldStartPartition = numberInCurrentPartition >= numberPerPartition; + + if (shouldStartPartition) { + returnedList.add(currentPartition); - currentPartition.transform((partition) -> new FunctionalList<>()); - numberInCurrentPartition.transform((number) -> 0); + currentPartition = new FunctionalList<>(); + numberInCurrentPartition = 0; } else { int currentElementCount = elementCounter.apply(value); - boolean shouldReject = numberInCurrentPartition.unwrap((number) -> { - return (number + currentElementCount) >= numberPerPartition; - }); + boolean shouldReject = (numberInCurrentPartition + currentElementCount) >= numberPerPartition; if (shouldReject) { rejectedItems.add(value); } else { - currentPartition.unwrap((partition) -> partition.add(value)); - numberInCurrentPartition.transform((number) -> number + currentElementCount); + currentPartition.add(value); + numberInCurrentPartition += currentElementCount; } } } -- cgit v1.2.3