Package org.owasp.esapi.codecs
Class HashTrie<T>
- java.lang.Object
-
- org.owasp.esapi.codecs.HashTrie<T>
-
- All Implemented Interfaces:
java.util.Map<java.lang.CharSequence,T>,Trie<T>
public class HashTrie<T> extends java.lang.Object implements Trie<T>
Trie implementation for CharSequence keys. This uses HashMaps for each level instead of the traditional array. This is done as with unicode, each level's array would be 64k entries. NOTE:
- @see java.util.Map.remove(Object) is not supported.
- If deletion support is added, the max key length will need work or removal.
- Null values are not supported.
- Author:
- Ed Schaller
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.owasp.esapi.codecs.Trie
Trie.TrieProxy<T>, Trie.Unmodifiable<T>, Trie.Util
-
-
Constructor Summary
Constructors Constructor Description HashTrie()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()Clear all entries.booleancontainsKey(java.lang.Object key)booleancontainsValue(java.lang.Object value)java.util.Set<java.util.Map.Entry<java.lang.CharSequence,T>>entrySet()booleanequals(java.lang.Object other)Tget(java.lang.Object key)Get the value for a key.java.util.Map.Entry<java.lang.CharSequence,T>getLongestMatch(java.io.PushbackReader keyIn)Get the key value entry who's key is the longest prefix match.java.util.Map.Entry<java.lang.CharSequence,T>getLongestMatch(java.lang.CharSequence key)Get the key value entry who's key is the longest prefix match.intgetMaxKeyLength()Get the maximum key length.inthashCode()booleanisEmpty()java.util.Set<java.lang.CharSequence>keySet()Tput(java.lang.CharSequence key, T value)Add mapping.voidputAll(java.util.Map<? extends java.lang.CharSequence,? extends T> map)Tremove(java.lang.Object key)Remove a entry.intsize()Get the number of entries.java.lang.StringtoString()java.util.Collection<T>values()
-
-
-
Method Detail
-
getLongestMatch
public java.util.Map.Entry<java.lang.CharSequence,T> getLongestMatch(java.lang.CharSequence key)
Get the key value entry who's key is the longest prefix match.- Specified by:
getLongestMatchin interfaceTrie<T>- Parameters:
key- The key to lookup- Returns:
- Entry with the longest matching key.
-
getLongestMatch
public java.util.Map.Entry<java.lang.CharSequence,T> getLongestMatch(java.io.PushbackReader keyIn) throws java.io.IOException
Get the key value entry who's key is the longest prefix match.- Specified by:
getLongestMatchin interfaceTrie<T>- Parameters:
keyIn- Pushback reader to read the key from. This should have a buffer at least as large asgetMaxKeyLength()or an IOException may be thrown backing up.- Returns:
- Entry with the longest matching key.
- Throws:
java.io.IOException- if keyIn.read() or keyIn.unread() does.
-
getMaxKeyLength
public int getMaxKeyLength()
Get the maximum key length.- Specified by:
getMaxKeyLengthin interfaceTrie<T>- Returns:
- max key length.
-
clear
public void clear()
Clear all entries.- Specified by:
clearin interfacejava.util.Map<java.lang.CharSequence,T>
-
containsKey
public boolean containsKey(java.lang.Object key)
- Specified by:
containsKeyin interfacejava.util.Map<java.lang.CharSequence,T>
-
containsValue
public boolean containsValue(java.lang.Object value)
- Specified by:
containsValuein interfacejava.util.Map<java.lang.CharSequence,T>
-
put
public T put(java.lang.CharSequence key, T value) throws java.lang.NullPointerException
Add mapping.- Specified by:
putin interfacejava.util.Map<java.lang.CharSequence,T>- Parameters:
key- The mapping's key.- Throws:
java.lang.NullPointerException
-
remove
public T remove(java.lang.Object key) throws java.lang.UnsupportedOperationException
Remove a entry.- Specified by:
removein interfacejava.util.Map<java.lang.CharSequence,T>- Returns:
- previous value
- Throws:
java.lang.UnsupportedOperationException- always.
-
putAll
public void putAll(java.util.Map<? extends java.lang.CharSequence,? extends T> map)
- Specified by:
putAllin interfacejava.util.Map<java.lang.CharSequence,T>
-
keySet
public java.util.Set<java.lang.CharSequence> keySet()
- Specified by:
keySetin interfacejava.util.Map<java.lang.CharSequence,T>
-
values
public java.util.Collection<T> values()
- Specified by:
valuesin interfacejava.util.Map<java.lang.CharSequence,T>
-
entrySet
public java.util.Set<java.util.Map.Entry<java.lang.CharSequence,T>> entrySet()
- Specified by:
entrySetin interfacejava.util.Map<java.lang.CharSequence,T>
-
get
public T get(java.lang.Object key)
Get the value for a key.- Specified by:
getin interfacejava.util.Map<java.lang.CharSequence,T>- Parameters:
key- The key to look up.- Returns:
- The value for key or null if the key is not found.
-
size
public int size()
Get the number of entries.- Specified by:
sizein interfacejava.util.Map<java.lang.CharSequence,T>- Returns:
- the number or entries.
-
equals
public boolean equals(java.lang.Object other)
- Specified by:
equalsin interfacejava.util.Map<java.lang.CharSequence,T>- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Specified by:
hashCodein interfacejava.util.Map<java.lang.CharSequence,T>- Overrides:
hashCodein classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmptyin interfacejava.util.Map<java.lang.CharSequence,T>
-
-