summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2017-02-09 11:50:31 -0500
committerbculkin2442 <bjculkin@mix.wvu.edu>2017-02-09 11:50:31 -0500
commitd2af58b0f68ebfbba2be7e7679efec6c8c0af12f (patch)
tree2b16fbf014db350126e8c1b5f081312276f85f62 /BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java
parent187e1815488e3c1ed22e7592f304e632cffefb82 (diff)
Update
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java27
1 files changed, 14 insertions, 13 deletions
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 81781f6..229d271 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcutils/GroupPartIteration.java
@@ -17,10 +17,13 @@ import bjc.utils.funcdata.IList;
*/
final class GroupPartIteration<E> implements Consumer<E> {
private IList<IList<E>> returnedList;
+
private IHolder<IList<E>> currentPartition;
private IList<E> rejectedItems;
+
private IHolder<Integer> numberInCurrentPartition;
private int numberPerPartition;
+
private Function<E, Integer> elementCounter;
public GroupPartIteration(IList<IList<E>> returned,
@@ -37,26 +40,24 @@ final class GroupPartIteration<E> implements Consumer<E> {
@Override
public void accept(E value) {
- if (numberInCurrentPartition
- .unwrap((number) -> number >= numberPerPartition)) {
- returnedList.add(
- currentPartition.unwrap((partition) -> partition));
+ if (numberInCurrentPartition.unwrap((number) -> number >= numberPerPartition)) {
+ returnedList.add(currentPartition.unwrap((partition) -> partition));
- currentPartition
- .transform((partition) -> new FunctionalList<>());
+ currentPartition.transform((partition) -> new FunctionalList<>());
numberInCurrentPartition.transform((number) -> 0);
} else {
int currentElementCount = elementCounter.apply(value);
- if (numberInCurrentPartition.unwrap((number) -> (number
- + currentElementCount) >= numberPerPartition)) {
+ boolean shouldReject = numberInCurrentPartition.unwrap((number) -> {
+ return (number + currentElementCount) >= numberPerPartition;
+ });
+
+ if (shouldReject) {
rejectedItems.add(value);
} else {
- currentPartition
- .unwrap((partition) -> partition.add(value));
- numberInCurrentPartition.transform(
- (number) -> number + currentElementCount);
+ currentPartition.unwrap((partition) -> partition.add(value));
+ numberInCurrentPartition.transform((number) -> number + currentElementCount);
}
}
}
-} \ No newline at end of file
+}