summaryrefslogtreecommitdiff
path: root/src/main/java/au/id/zancanaro/RoseTree.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/au/id/zancanaro/RoseTree.java')
-rw-r--r--src/main/java/au/id/zancanaro/RoseTree.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/main/java/au/id/zancanaro/RoseTree.java b/src/main/java/au/id/zancanaro/RoseTree.java
index 6ba5c1c..458d441 100644
--- a/src/main/java/au/id/zancanaro/RoseTree.java
+++ b/src/main/java/au/id/zancanaro/RoseTree.java
@@ -1,7 +1,7 @@
package au.id.zancanaro;
-import java.io.OutputStream;
-import java.util.Arrays;
+import java.io.IOException;
+import java.io.Writer;
import java.util.Collections;
import java.util.Iterator;
import java.util.function.Function;
@@ -84,4 +84,20 @@ public class RoseTree<T> {
throw new IllegalArgumentException("Current value doesn't match predicate: whoops!");
}
}
+
+ @SuppressWarnings("unused")
+ public void print(Writer output) throws IOException {
+ print(output, Object::toString);
+ }
+
+ @SuppressWarnings("unused")
+ public void print(Writer output, Function<T, String> toString) throws IOException {
+ output.write(toString.apply(this.getValue()));
+ output.write('[');
+ for (RoseTree<T> child : children) {
+ child.print(output, toString);
+ }
+ output.write(']');
+ output.flush();
+ }
}