
O - Object type (arbitrary!)public class HashMapHierarchy<O> extends Object implements ModifiableHierarchy<O>
| Modifier and Type | Class and Description |
|---|---|
private class |
HashMapHierarchy.ItrAll
Iterator over all members of the hierarchy.
|
private class |
HashMapHierarchy.ItrAnc
Iterator over all Ancestors.
|
private class |
HashMapHierarchy.ItrDesc
Iterator to collect into the descendants.
|
private static class |
HashMapHierarchy.Rec<O>
Hierarchy pointers for an object.
|
Hierarchy.Iter<O>| Modifier and Type | Field and Description |
|---|---|
private static Hierarchy.Iter<?> |
EMPTY_ITERATOR
Empty iterator.
|
private HashMap<O,HashMapHierarchy.Rec<O>> |
graph
Reference storage.
|
| Constructor and Description |
|---|
HashMapHierarchy()
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
void |
add(O entry)
Add an entry (initializes data structures).
|
void |
add(O parent,
O child)
Add a parent-child relationship.
|
Hierarchy.Iter<O> |
iterAll()
Iterate over all members.
|
Hierarchy.Iter<O> |
iterAncestors(O obj)
Iterate ancestors (recursive parents)
|
Hierarchy.Iter<O> |
iterChildren(O obj)
Iterate over the (direct) children.
|
Hierarchy.Iter<O> |
iterDescendants(O obj)
Iterate descendants (recursive children)
|
Hierarchy.Iter<O> |
iterParents(O obj)
Iterate over the (direct) parents.
|
int |
numChildren(O obj)
Get number of children
|
int |
numParents(O obj)
Get number of (direct) parents
|
void |
remove(O entry)
Remove an entry and all its parent-child relationships.
|
void |
remove(O parent,
O child)
Remove a parent-child relationship.
|
void |
removeSubtree(O entry)
Remove an entry and it's whole subtree (unless the elements are reachable
by a different path!)
|
int |
size()
Total size - number of objects contained.
|
private final HashMap<O,HashMapHierarchy.Rec<O>> graph
private static final Hierarchy.Iter<?> EMPTY_ITERATOR
public int size()
Hierarchypublic void add(O parent, O child)
ModifiableHierarchyadd in interface ModifiableHierarchy<O>parent - Parentchild - Childpublic void add(O entry)
ModifiableHierarchyadd in interface ModifiableHierarchy<O>entry - Entrypublic void remove(O parent, O child)
ModifiableHierarchyremove in interface ModifiableHierarchy<O>parent - Parentchild - Childpublic void remove(O entry)
ModifiableHierarchyremove in interface ModifiableHierarchy<O>entry - Entrypublic void removeSubtree(O entry)
ModifiableHierarchyremoveSubtree in interface ModifiableHierarchy<O>entry - Entrypublic int numChildren(O obj)
HierarchynumChildren in interface Hierarchy<O>obj - object to get number of children forpublic Hierarchy.Iter<O> iterChildren(O obj)
HierarchyiterChildren in interface Hierarchy<O>obj - object to get children forpublic Hierarchy.Iter<O> iterDescendants(O obj)
HierarchyiterDescendants in interface Hierarchy<O>obj - object to get descendants forpublic int numParents(O obj)
HierarchynumParents in interface Hierarchy<O>obj - reference objectpublic Hierarchy.Iter<O> iterParents(O obj)
HierarchyiterParents in interface Hierarchy<O>obj - object to get parents forpublic Hierarchy.Iter<O> iterAncestors(O obj)
HierarchyiterAncestors in interface Hierarchy<O>obj - object to get ancestors for