|
|||||||||
| Home >> All >> org >> apache >> jorphan >> [ collections overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
org.apache.jorphan.collections
Class HashTree

java.lang.Objectorg.apache.jorphan.collections.HashTree
- All Implemented Interfaces:
- java.util.Map, java.io.Serializable
- Direct Known Subclasses:
- ListedHashTree, SortedHashTree
- public class HashTree
- extends java.lang.Object
- implements java.io.Serializable, java.util.Map
- extends java.lang.Object
This class is used to create a tree structure of objects. Each element in the tree is also a key to the next node down in the tree. It provides many ways to add objects and branches, as well as many ways to retrieve.
HashTree implements the Map interface for convenience reasons. The main difference between a Map and a HashTree is that the HashTree organizes the data into a recursive tree structure, and provides the means to manipulate that structure.
Of special interest is the traverse(HashTreeTraverser) 55 method, which
provides an expedient way to traverse any HashTree by implementing the
HashTreeTraverser interface in order to perform some operation on the
tree, or to extract information from the tree.
- Version:
- $Revision: 1.22 $ Updated on: $Date: 2005/07/12 20:51:04 $
| Nested Class Summary | |
private class |
HashTree.ConvertToString
|
static class |
HashTree.Test
|
private class |
HashTree.TreeSearcher
|
| Nested classes inherited from class java.util.Map |
java.util.Map.Entry |
| Field Summary | |
protected java.util.Map |
data
|
| Constructor Summary | |
HashTree()
Creates an empty new HashTree. |
|
HashTree(java.util.Collection keys)
Creates a new HashTree and adds all the objects in the given collection as top-level nodes in the tree. |
|
HashTree(java.lang.Object key)
Creates a new HashTree and adds the given object as a top-level node. |
|
HashTree(java.lang.Object[] keys)
Creates a new HashTree and adds all the objects in the given array as top-level nodes in the tree. |
|
| Method Summary | |
void |
add(java.util.Collection keys)
Adds a bunch of keys into the HashTree at the current level. |
void |
add(java.util.Collection treePath,
java.util.Collection values)
Adds a series of nodes into the HashTree using the given path. |
HashTree |
add(java.util.Collection treePath,
java.lang.Object value)
Adds a series of nodes into the HashTree using the given path. |
void |
add(java.util.Collection treePath,
java.lang.Object[] values)
Adds a series of nodes into the HashTree using the given path. |
void |
add(HashTree newTree)
Adds all the nodes and branches of the given tree to this tree. |
HashTree |
add(java.lang.Object key)
Adds an key into the HashTree at the current level. |
void |
add(java.lang.Object[] keys)
Adds all the given objects as nodes at the current level. |
void |
add(java.lang.Object[] treePath,
java.util.Collection values)
Adds a series of nodes into the HashTree using the given path. |
HashTree |
add(java.lang.Object[] treePath,
java.lang.Object value)
|
void |
add(java.lang.Object[] treePath,
java.lang.Object[] values)
Adds a series of nodes into the HashTree using the given path. |
void |
add(java.lang.Object key,
java.util.Collection values)
Adds a key as a node at the current level and then adds all the objects in the second argument as nodes of the new node. |
void |
add(java.lang.Object key,
HashTree subTree)
Adds a key as a node at the current level and then adds the given HashTree to that new node. |
HashTree |
add(java.lang.Object key,
java.lang.Object value)
Adds a key and it's value in the HashTree. |
void |
add(java.lang.Object key,
java.lang.Object[] values)
Adds a key and it's values in the HashTree. |
protected HashTree |
addTreePath(java.util.Collection treePath)
|
void |
clear()
Clears the HashTree of all contents. |
java.lang.Object |
clone()
Create a clone of this HashTree. |
protected void |
cloneTree(HashTree newTree)
|
boolean |
containsKey(java.lang.Object o)
If the HashTree contains the given object as a key at the top level, then a true result is returned, otherwise false. |
boolean |
containsValue(java.lang.Object value)
Implemented as required by the Map interface, but is not very useful here. |
protected HashTree |
createNewTree()
Creates a new tree. |
protected HashTree |
createNewTree(java.util.Collection values)
Creates a new tree. |
protected HashTree |
createNewTree(java.lang.Object key)
Creates a new tree. |
java.util.Set |
entrySet()
Exists to satisfy the Map interface. |
boolean |
equals(java.lang.Object o)
Compares all objects in the tree and verifies that the two trees contain the same objects at the same tree levels. |
java.lang.Object |
get(java.lang.Object key)
Returns the HashTree object associated with the given key. |
java.lang.Object[] |
getArray()
Gets an array of all keys in the current HashTree node. |
java.lang.Object[] |
getArray(java.util.Collection treePath)
Recurses down into the HashTree stucture using each subsequent key in the treePath argument, and returns an array of keys of the HashTree object at the end of the recursion. |
java.lang.Object[] |
getArray(java.lang.Object key)
Gets an array of all keys in the HashTree mapped to the given key of the current HashTree object (in other words, one level down). |
java.lang.Object[] |
getArray(java.lang.Object[] treePath)
Recurses down into the HashTree stucture using each subsequent key in the array of keys, and returns an array of keys of the HashTree object at the end of the recursion. |
HashTree |
getTree(java.util.Collection treePath)
Gets the HashTree object mapped to the last key in the SortedSet by recursing through the HashTree structure one key at a time. |
HashTree |
getTree(java.lang.Object key)
Gets the HashTree mapped to the given key. |
HashTree |
getTree(java.lang.Object[] treePath)
Gets the HashTree object mapped to the last key in the array by recursing through the HashTree structure one key at a time. |
protected HashTree |
getTreePath(java.util.Collection treePath)
|
int |
hashCode()
Returns a hashcode for this HashTree. |
boolean |
isEmpty()
If the HashTree is empty, true is returned, false otherwise. |
java.util.Set |
keySet()
Returns a Set of all the keys in the top-level of this HashTree. |
java.util.Collection |
list()
Gets a Collection of all keys in the current HashTree node. |
java.util.Collection |
list(java.util.Collection treePath)
Recurses down into the HashTree stucture using each subsequent key in the List of keys, and returns the Set of keys of the HashTree object at the end of the recursion. |
java.util.Collection |
list(java.lang.Object key)
Gets a Set of all keys in the HashTree mapped to the given key of the current HashTree object (in other words, one level down. |
java.util.Collection |
list(java.lang.Object[] treePath)
Recurses down into the HashTree stucture using each subsequent key in the array of keys, and returns the Set of keys of the HashTree object at the end of the recursion. |
java.lang.Object |
put(java.lang.Object key,
java.lang.Object value)
This is the same as calling HashTree.add(key,value). |
void |
putAll(java.util.Map map)
The Map given must also be a HashTree, otherwise an UnsupportedOperationException is thrown. |
(package private) void |
readObject(java.io.ObjectInputStream ois)
Method readObject. |
java.lang.Object |
remove(java.lang.Object key)
Removes the entire branch specified by the given key. |
void |
replace(java.lang.Object currentKey,
java.lang.Object newKey)
Finds the given current key, and replaces it with the given new key. |
HashTree |
search(java.lang.Object key)
Searches the HashTree structure for the given key. |
void |
set(java.util.Collection values)
Sets the nodes of the current tree to be the objects of the given collection. |
void |
set(java.util.Collection treePath,
java.util.Collection values)
Sets a series of keys into the HashTree. |
void |
set(java.util.Collection treePath,
java.lang.Object[] values)
Sets a series of keys into the HashTree. |
void |
set(java.lang.Object[] treePath,
java.util.Collection values)
Sets a series of keys into the HashTree. |
void |
set(java.lang.Object[] treePath,
java.lang.Object[] values)
Sets a series of keys into the HashTree. |
void |
set(java.lang.Object key,
java.util.Collection values)
Sets a key and its values in the HashTree. |
void |
set(java.lang.Object key,
HashTree t)
Sets a key into the current tree and assigns it a HashTree as its subtree. |
void |
set(java.lang.Object key,
java.lang.Object value)
Sets a key and it's value in the HashTree. |
void |
set(java.lang.Object key,
java.lang.Object[] values)
Sets a key and it's values in the HashTree. |
int |
size()
Returns the number of top-level entries in the HashTree. |
java.lang.String |
toString()
Convert this Object to a human-readable String. |
void |
traverse(HashTreeTraverser visitor)
Allows any implementation of the HashTreeTraverser interface to easily traverse (depth-first) all the nodes of the HashTree. |
private void |
traverseInto(HashTreeTraverser visitor)
The recursive method that accomplishes the tree-traversal and performs the callbacks to the HashTreeTraverser. |
java.util.Collection |
values()
Returns a collection of all the sub-trees of the current tree. |
(package private) void |
writeObject(java.io.ObjectOutputStream oos)
|
| Methods inherited from class java.lang.Object |
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Field Detail |
data
protected java.util.Map data
| Constructor Detail |
HashTree
public HashTree()
- Creates an empty new HashTree.
HashTree
public HashTree(java.lang.Object key)
- Creates a new HashTree and adds the given object as a top-level node.
HashTree
public HashTree(java.util.Collection keys)
- Creates a new HashTree and adds all the objects in the given collection
as top-level nodes in the tree.
HashTree
public HashTree(java.lang.Object[] keys)
- Creates a new HashTree and adds all the objects in the given array as
top-level nodes in the tree.
| Method Detail |
putAll
public void putAll(java.util.Map map)
- The Map given must also be a HashTree, otherwise an
UnsupportedOperationException is thrown. If it is a HashTree, this is
like calling the add(HashTree) method.
- Specified by:
putAllin interfacejava.util.Map
entrySet
public java.util.Set entrySet()
- Exists to satisfy the Map interface.
- Specified by:
entrySetin interfacejava.util.Map
containsValue
public boolean containsValue(java.lang.Object value)
- Implemented as required by the Map interface, but is not very useful
here. All 'values' in a HashTree are HashTree's themselves.
- Specified by:
containsValuein interfacejava.util.Map
put
public java.lang.Object put(java.lang.Object key, java.lang.Object value)
- This is the same as calling HashTree.add(key,value).
- Specified by:
putin interfacejava.util.Map
clear
public void clear()
- Clears the HashTree of all contents.
- Specified by:
clearin interfacejava.util.Map
values
public java.util.Collection values()
- Returns a collection of all the sub-trees of the current tree.
- Specified by:
valuesin interfacejava.util.Map
add
public void add(java.lang.Object key, HashTree subTree)
- Adds a key as a node at the current level and then adds the given
HashTree to that new node.
add
public void add(HashTree newTree)
- Adds all the nodes and branches of the given tree to this tree. Is like
merging two trees. Duplicates are ignored.
containsKey
public boolean containsKey(java.lang.Object o)
- If the HashTree contains the given object as a key at the top level, then
a true result is returned, otherwise false.
- Specified by:
containsKeyin interfacejava.util.Map
isEmpty
public boolean isEmpty()
- If the HashTree is empty, true is returned, false otherwise.
- Specified by:
isEmptyin interfacejava.util.Map
set
public void set(java.lang.Object key, java.lang.Object value)
- Sets a key and it's value in the HashTree. It actually sets up a key, and
then creates a node for the key and sets the value to the new node, as a
key. Any previous nodes that existed under the given key are lost.
set
public void set(java.lang.Object key, HashTree t)
- Sets a key into the current tree and assigns it a HashTree as its
subtree. Any previous entries under the given key are removed.
set
public void set(java.lang.Object key, java.lang.Object[] values)
- Sets a key and it's values in the HashTree. It sets up a key in the
current node, and then creates a node for that key, and sets all the
values in the array as keys in the new node. Any keys previously held
under the given key are lost.
set
public void set(java.lang.Object key, java.util.Collection values)
- Sets a key and its values in the HashTree. It sets up a key in the
current node, and then creates a node for that key, and set all the
values in the array as keys in the new node. Any keys previously held
under the given key are removed.
set
public void set(java.lang.Object[] treePath, java.lang.Object[] values)
- Sets a series of keys into the HashTree. It sets up the first object in
the key array as a key in the current node, recurses into the next
HashTree node through that key and adds the second object in the array.
Continues recursing in this manner until the end of the first array is
reached, at which point all the values of the second array are set as
keys to the bottom-most node. All previous keys of that bottom-most node
are removed.
set
public void set(java.lang.Object[] treePath, java.util.Collection values)
- Sets a series of keys into the HashTree. It sets up the first object in
the key array as a key in the current node, recurses into the next
HashTree node through that key and adds the second object in the array.
Continues recursing in this manner until the end of the first array is
reached, at which point all the values of the Collection of values are
set as keys to the bottom-most node. Any keys previously held by the
bottom-most node are lost.
set
public void set(java.util.Collection treePath, java.lang.Object[] values)
- Sets a series of keys into the HashTree. It sets up the first object in
the key list as a key in the current node, recurses into the next
HashTree node through that key and adds the second object in the list.
Continues recursing in this manner until the end of the first list is
reached, at which point all the values of the array of values are set as
keys to the bottom-most node. Any previously existing keys of that bottom
node are removed.
set
public void set(java.util.Collection values)
- Sets the nodes of the current tree to be the objects of the given
collection. Any nodes previously in the tree are removed.
set
public void set(java.util.Collection treePath, java.util.Collection values)
- Sets a series of keys into the HashTree. It sets up the first object in
the key list as a key in the current node, recurses into the next
HashTree node through that key and adds the second object in the list.
Continues recursing in this manner until the end of the first list is
reached, at which point all the values of the Collection of values are
set as keys to the bottom-most node. Any previously existing keys of that
bottom node are lost.
add
public HashTree add(java.lang.Object key)
- Adds an key into the HashTree at the current level.
add
public void add(java.lang.Object[] keys)
- Adds all the given objects as nodes at the current level.
add
public void add(java.util.Collection keys)
- Adds a bunch of keys into the HashTree at the current level.
add
public HashTree add(java.lang.Object key, java.lang.Object value)
- Adds a key and it's value in the HashTree. The first argument becomes a
node at the current level, and the second argument becomes a node of it.
add
public void add(java.lang.Object key, java.lang.Object[] values)
- Adds a key and it's values in the HashTree. The first argument becomes a
node at the current level, and adds all the values in the array to the
new node.
add
public void add(java.lang.Object key, java.util.Collection values)
- Adds a key as a node at the current level and then adds all the objects
in the second argument as nodes of the new node.
add
public void add(java.lang.Object[] treePath, java.lang.Object[] values)
- Adds a series of nodes into the HashTree using the given path. The first
argument is an array that represents a path to a specific node in the
tree. If the path doesn't already exist, it is created (the objects are
added along the way). At the path, all the objects in the second argument
are added as nodes.
add
public void add(java.lang.Object[] treePath, java.util.Collection values)
- Adds a series of nodes into the HashTree using the given path. The first
argument is an array that represents a path to a specific node in the
tree. If the path doesn't already exist, it is created (the objects are
added along the way). At the path, all the objects in the second argument
are added as nodes.
add
public HashTree add(java.lang.Object[] treePath, java.lang.Object value)
add
public void add(java.util.Collection treePath, java.lang.Object[] values)
- Adds a series of nodes into the HashTree using the given path. The first
argument is a List that represents a path to a specific node in the tree.
If the path doesn't already exist, it is created (the objects are added
along the way). At the path, all the objects in the second argument are
added as nodes.
add
public HashTree add(java.util.Collection treePath, java.lang.Object value)
- Adds a series of nodes into the HashTree using the given path. The first
argument is a List that represents a path to a specific node in the tree.
If the path doesn't already exist, it is created (the objects are added
along the way). At the path, the object in the second argument is added
as a node.
add
public void add(java.util.Collection treePath, java.util.Collection values)
- Adds a series of nodes into the HashTree using the given path. The first
argument is a SortedSet that represents a path to a specific node in the
tree. If the path doesn't already exist, it is created (the objects are
added along the way). At the path, all the objects in the second argument
are added as nodes.
addTreePath
protected HashTree addTreePath(java.util.Collection treePath)
getTree
public HashTree getTree(java.lang.Object key)
- Gets the HashTree mapped to the given key.
get
public java.lang.Object get(java.lang.Object key)
- Returns the HashTree object associated with the given key. Same as
calling
getTree(Object)55 .- Specified by:
getin interfacejava.util.Map
getTree
public HashTree getTree(java.lang.Object[] treePath)
- Gets the HashTree object mapped to the last key in the array by recursing
through the HashTree structure one key at a time.
clone
public java.lang.Object clone()
- Create a clone of this HashTree. This is not a deep clone (ie, the
contents of the tree are not cloned).
cloneTree
protected void cloneTree(HashTree newTree)
createNewTree
protected HashTree createNewTree()
- Creates a new tree. This method exists to allow inheriting classes to
generate the appropriate types of nodes. For instance, when a node is
added, it's value is a HashTree. Rather than directly calling the
HashTree() constructor, the createNewTree() method is called. Inheriting
classes should override these methods and create the appropriate subclass
of HashTree.
createNewTree
protected HashTree createNewTree(java.lang.Object key)
- Creates a new tree. This method exists to allow inheriting classes to
generate the appropriate types of nodes. For instance, when a node is
added, it's value is a HashTree. Rather than directly calling the
HashTree() constructor, the createNewTree() method is called. Inheriting
classes should override these methods and create the appropriate subclass
of HashTree.
createNewTree
protected HashTree createNewTree(java.util.Collection values)
- Creates a new tree. This method exists to allow inheriting classes to
generate the appropriate types of nodes. For instance, when a node is
added, it's value is a HashTree. Rather than directly calling the
HashTree() constructor, the createNewTree() method is called. Inheriting
classes should override these methods and create the appropriate subclass
of HashTree.
getTree
public HashTree getTree(java.util.Collection treePath)
- Gets the HashTree object mapped to the last key in the SortedSet by
recursing through the HashTree structure one key at a time.
list
public java.util.Collection list()
- Gets a Collection of all keys in the current HashTree node. If the
HashTree represented a file system, this would be like getting a
collection of all the files in the current folder.
list
public java.util.Collection list(java.lang.Object key)
- Gets a Set of all keys in the HashTree mapped to the given key of the
current HashTree object (in other words, one level down. If the HashTree
represented a file system, this would like getting a list of all files in
a sub-directory (of the current directory) specified by the key argument.
remove
public java.lang.Object remove(java.lang.Object key)
- Removes the entire branch specified by the given key.
- Specified by:
removein interfacejava.util.Map
list
public java.util.Collection list(java.lang.Object[] treePath)
- Recurses down into the HashTree stucture using each subsequent key in the
array of keys, and returns the Set of keys of the HashTree object at the
end of the recursion. If the HashTree represented a file system, this
would be like getting a list of all the files in a directory specified by
the treePath, relative from the current directory.
list
public java.util.Collection list(java.util.Collection treePath)
- Recurses down into the HashTree stucture using each subsequent key in the
List of keys, and returns the Set of keys of the HashTree object at the
end of the recursion. If the HashTree represented a file system, this
would be like getting a list of all the files in a directory specified by
the treePath, relative from the current directory.
replace
public void replace(java.lang.Object currentKey, java.lang.Object newKey)
- Finds the given current key, and replaces it with the given new key. Any
tree structure found under the original key is moved to the new key.
getArray
public java.lang.Object[] getArray()
- Gets an array of all keys in the current HashTree node. If the HashTree
represented a file system, this would be like getting an array of all the
files in the current folder.
getArray
public java.lang.Object[] getArray(java.lang.Object key)
- Gets an array of all keys in the HashTree mapped to the given key of the
current HashTree object (in other words, one level down). If the HashTree
represented a file system, this would like getting a list of all files in
a sub-directory (of the current directory) specified by the key argument.
getArray
public java.lang.Object[] getArray(java.lang.Object[] treePath)
- Recurses down into the HashTree stucture using each subsequent key in the
array of keys, and returns an array of keys of the HashTree object at the
end of the recursion. If the HashTree represented a file system, this
would be like getting a list of all the files in a directory specified by
the treePath, relative from the current directory.
getArray
public java.lang.Object[] getArray(java.util.Collection treePath)
- Recurses down into the HashTree stucture using each subsequent key in the
treePath argument, and returns an array of keys of the HashTree object at
the end of the recursion. If the HashTree represented a file system, this
would be like getting a list of all the files in a directory specified by
the treePath, relative from the current directory.
getTreePath
protected HashTree getTreePath(java.util.Collection treePath)
hashCode
public int hashCode()
- Returns a hashcode for this HashTree.
- Specified by:
hashCodein interfacejava.util.Map
equals
public boolean equals(java.lang.Object o)
- Compares all objects in the tree and verifies that the two trees contain
the same objects at the same tree levels. Returns true if they do, false
otherwise.
- Specified by:
equalsin interfacejava.util.Map
keySet
public java.util.Set keySet()
- Returns a Set of all the keys in the top-level of this HashTree.
- Specified by:
keySetin interfacejava.util.Map
search
public HashTree search(java.lang.Object key)
- Searches the HashTree structure for the given key. If it finds the key,
it returns the HashTree mapped to the key. If it finds nothing, it
returns null.
readObject
void readObject(java.io.ObjectInputStream ois) throws java.lang.ClassNotFoundException, java.io.IOException
- Method readObject.
writeObject
void writeObject(java.io.ObjectOutputStream oos) throws java.io.IOException
size
public int size()
- Returns the number of top-level entries in the HashTree.
- Specified by:
sizein interfacejava.util.Map
traverse
public void traverse(HashTreeTraverser visitor)
- Allows any implementation of the HashTreeTraverser interface to easily
traverse (depth-first) all the nodes of the HashTree. The Traverser
implementation will be given notification of each node visited.
traverseInto
private void traverseInto(HashTreeTraverser visitor)
- The recursive method that accomplishes the tree-traversal and performs
the callbacks to the HashTreeTraverser.
toString
public java.lang.String toString()
- Description copied from class:
java.lang.Object - Convert this Object to a human-readable String.
There are no limits placed on how long this String
should be or what it should contain. We suggest you
make it as intuitive as possible to be able to place
it into System.out.println() 55
and such.
It is typical, but not required, to ensure that this method never completes abruptly with a java.lang.RuntimeException.
This method will be called when performing string concatenation with this object. If the result is
null, string concatenation will instead use"null".The default implementation returns
getClass().getName() + "@" + Integer.toHexString(hashCode()).
|
|||||||||
| Home >> All >> org >> apache >> jorphan >> [ collections overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC
org.apache.jorphan.collections.HashTree