summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/data
diff options
context:
space:
mode:
authorstudent <student@69.161.224.76>2018-03-19 17:01:22 -0400
committerstudent <student@69.161.224.76>2018-03-19 17:01:22 -0400
commit12a29047a19ba960865cb9a696ae4cca78715d77 (patch)
treeb155a1eb01dff8bcdeac0610d0689ee99b235f03 /base/src/main/java/bjc/utils/data
parentd3aff0509183a73aebf540bb46ea2e29807df855 (diff)
Simplify Tree.collapse
Diffstat (limited to 'base/src/main/java/bjc/utils/data')
-rw-r--r--base/src/main/java/bjc/utils/data/ITree.java4
-rw-r--r--base/src/main/java/bjc/utils/data/Tree.java9
2 files changed, 7 insertions, 6 deletions
diff --git a/base/src/main/java/bjc/utils/data/ITree.java b/base/src/main/java/bjc/utils/data/ITree.java
index 5a4d645..3e3d5ce 100644
--- a/base/src/main/java/bjc/utils/data/ITree.java
+++ b/base/src/main/java/bjc/utils/data/ITree.java
@@ -1,10 +1,12 @@
package bjc.utils.data;
+import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.UnaryOperator;
+import bjc.utils.funcdata.IList;
import bjc.utils.funcdata.bst.TreeLinearizationMethod;
import bjc.utils.functypes.ListFlattener;
@@ -57,7 +59,7 @@ public interface ITree<ContainedType> {
* @return The final transformed state.
*/
<NewType, ReturnedType> ReturnedType collapse(Function<ContainedType, NewType> leafTransform,
- Function<ContainedType, ListFlattener<NewType>> nodeCollapser,
+ BiFunction<ContainedType, IList<NewType>, NewType> nodeCollapser,
Function<NewType, ReturnedType> resultTransformer);
/**
diff --git a/base/src/main/java/bjc/utils/data/Tree.java b/base/src/main/java/bjc/utils/data/Tree.java
index f7ff90a..8fcbead 100644
--- a/base/src/main/java/bjc/utils/data/Tree.java
+++ b/base/src/main/java/bjc/utils/data/Tree.java
@@ -1,5 +1,6 @@
package bjc.utils.data;
+import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
@@ -187,7 +188,7 @@ public class Tree<ContainedType> implements ITree<ContainedType> {
@Override
public <NewType, ReturnedType> ReturnedType collapse(final Function<ContainedType, NewType> leafTransform,
- final Function<ContainedType, ListFlattener<NewType>> nodeCollapser,
+ final BiFunction<ContainedType, IList<NewType>, NewType> nodeCollapser,
final Function<NewType, ReturnedType> resultTransformer) {
return resultTransformer.apply(internalCollapse(leafTransform, nodeCollapser));
}
@@ -216,10 +217,8 @@ public class Tree<ContainedType> implements ITree<ContainedType> {
*/
protected <NewType> NewType internalCollapse(final Function<ContainedType, NewType> leafTransform,
- final Function<ContainedType, ListFlattener<NewType>> nodeCollapser) {
+ final BiFunction<ContainedType, IList<NewType>, NewType> nodeCollapser) {
if(hasChildren) {
- final Function<IList<NewType>, NewType> nodeTransformer = nodeCollapser.apply(data);
-
final IList<NewType> collapsedChildren = children.map(child -> {
final NewType collapsed = child.collapse(leafTransform, nodeCollapser,
subTreeVal -> subTreeVal);
@@ -227,7 +226,7 @@ public class Tree<ContainedType> implements ITree<ContainedType> {
return collapsed;
});
- return nodeTransformer.apply(collapsedChildren);
+ return nodeCollapser.apply(data, collapsedChildren);
}
return leafTransform.apply(data);