
O - Object type (arbitrary!)public class HashMapHierarchy<O> extends Object implements ModifiableHierarchy<O>
| Modifier and Type | Class and Description | 
|---|---|
| private class  | HashMapHierarchy.ItrAllIterator over all members of the hierarchy. | 
| private class  | HashMapHierarchy.ItrAncIterator over all Ancestors. | 
| private class  | HashMapHierarchy.ItrDescIterator 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_ITERATOREmpty iterator. | 
| private HashMap<O,HashMapHierarchy.Rec<O>> | graphReference 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