From 12a29047a19ba960865cb9a696ae4cca78715d77 Mon Sep 17 00:00:00 2001 From: student Date: Mon, 19 Mar 2018 17:01:22 -0400 Subject: Simplify Tree.collapse --- base/src/main/java/bjc/utils/data/ITree.java | 4 +++- base/src/main/java/bjc/utils/data/Tree.java | 9 ++++----- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'base') 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 { * @return The final transformed state. */ ReturnedType collapse(Function leafTransform, - Function> nodeCollapser, + BiFunction, NewType> nodeCollapser, Function 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 implements ITree { @Override public ReturnedType collapse(final Function leafTransform, - final Function> nodeCollapser, + final BiFunction, NewType> nodeCollapser, final Function resultTransformer) { return resultTransformer.apply(internalCollapse(leafTransform, nodeCollapser)); } @@ -216,10 +217,8 @@ public class Tree implements ITree { */ protected NewType internalCollapse(final Function leafTransform, - final Function> nodeCollapser) { + final BiFunction, NewType> nodeCollapser) { if(hasChildren) { - final Function, NewType> nodeTransformer = nodeCollapser.apply(data); - final IList collapsedChildren = children.map(child -> { final NewType collapsed = child.collapse(leafTransform, nodeCollapser, subTreeVal -> subTreeVal); @@ -227,7 +226,7 @@ public class Tree implements ITree { return collapsed; }); - return nodeTransformer.apply(collapsedChildren); + return nodeCollapser.apply(data, collapsedChildren); } return leafTransform.apply(data); -- cgit v1.2.3