A parent/children data structure
Find a file
2016-05-24 16:36:10 +01:00
.idea .idea - fixup 2016-03-14 15:39:16 +00:00
src NodeItemTest: more tests 2016-05-24 16:36:10 +01:00
.gitignore .idea: add IntelliJ configuration 2016-03-14 14:35:57 +00:00
.travis.yml .travis.yml: added 2016-01-09 17:19:54 +00:00
CHANGELOG CHANGELOG 2016-01-09 18:00:33 +00:00
checkstyle.xml Initial commit 2016-01-09 17:08:52 +00:00
LICENSE Initial commit 2016-01-09 17:10:37 +00:00
node.iml Add assertj-core dependency for testing 2016-05-24 11:56:14 +01:00
pom.xml Add assertj-core dependency for testing 2016-05-24 11:56:14 +01:00
README.md README.md: fix typo 2016-01-09 17:55:24 +00:00

node

A parent/children data structure

Usage

Add as a dependency in your pom.xml:

<dependency>
    <groupId>net.kemitix</groupId>
    <artifactId>node</artifactId>
    <version>${node.version}</version>
</dependency>

The library consits of an interface Node and an implementation NodeItem.

Create a root node

Node<String> root = new NodeItem<>("[root]");

Get the contents of the node

String rootData = root.getData(); // returns "[root]"

Add a child node

Node<String> child = root.createChild("child");

Which is shorthand for:

Node<String> child = new NodeItem<>("child");
root.addChild(child);

The tree now looks like:

"[root]"
\-> "child"

Get the child node

Node<String> 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<Node<String>> 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<Node<String>> children = root.getChildren();
children.size(); // returns 2 ("child" and "alpha")