[![Build Status](https://travis-ci.org/kemitix/node.svg?branch=develop)](https://travis-ci.org/kemitix/node) [![Coverage Status](https://coveralls.io/repos/github/kemitix/node/badge.svg?branch=develop)](https://coveralls.io/github/kemitix/node?branch=develop) # node [![Join the chat at https://gitter.im/kemitix/node](https://badges.gitter.im/kemitix/node.svg)](https://gitter.im/kemitix/node?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) A parent/children data structure # Usage Add as a dependency in your `pom.xml`: net.kemitix node ${node.version} The library consits of an interface `Node` and an implementation `NodeItem`. ## Create a root node Node root = new NodeItem<>("[root]"); ## Get the contents of the node String rootData = root.getData(); // returns "[root]" ## Add a child node Node child = root.createChild("child"); Which is shorthand for: Node child = new NodeItem<>("child"); root.addChild(child); The tree now looks like: "[root]" \-> "child" ## Get the child node Node childNode = root.getChild("child"); ## Create a chain of nodes root.createDescendantLine(Arrays.asList("alpha", "beta", "gamma")); "[root]" |-> "child" \-> "alpha" \-> "beta" \-> "gamma" ## Walk the tree to find a node Optional> foundNode = root.walkTree(Arrays.asList( "alpha", "beta", "gamma")); if (foundNode.isPresent()) { String betaData = foundNode.get().getParent().getData(); // returns "beta" } ## Get all children of a node Set> children = root.getChildren(); children.size(); // returns 2 ("child" and "alpha")