All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.unlaxer.util.collection.TreeNode Maven / Gradle / Ivy

The newest version!
package org.unlaxer.util.collection;

import java.io.Serializable;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Stream;

public interface TreeNode extends Serializable , IDAccessor{
	
	public T get();
	
	public TreeNode root();
	
	public boolean isRoot();
	
	public boolean isLeaf();
	
	public ID id();
	
	public Optional> parent();
	
	public TreeNodeList children();
	
	public void setParent(TreeNode parent);
	
	public void addChild(TreeNode child);
	
	public void addChild(int index , TreeNode child);
	
	public void addChildren(TreeNodeList children);
	
	public boolean removeChild(ID targetId);
	
	public boolean resetChild(ID targetId , TreeNode newChild);
	
	public Optional> find(ID targetId);
	
	public Optional> find(Predicate> predicate);
	
	public Optional> findWithContent(Predicate predicate);
	
	public default TreeNode copy(){
		return copy(this);
	}
	
	public TreeNode copy(TreeNode rootNode);
	
	public  TreeNode transform(Function transfrmer);
	
	public TreeNodeList leafs();
	
	public static  TreeNode of(ID id, T object) {
		return new TreeNodeImpl(id, object);
	}

	public static  TreeNode of(ID id, T object , TreeNode parent ) {
		return new TreeNodeImpl(id, object , parent);
	}
	
	public void resetObject(T object);
	
	public Stream> stream();

	public List> list();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy