Interface PrefixMap<V extends Serializable>
- All Superinterfaces:
Map<String,,V> Serializable
- All Known Implementing Classes:
ASCIIPrefixMap,StringPrefixMap
An object that maps String prefixes to values. A PrefixMap cannot contain duplicate prefixes; each prefix can map to at most one value.
The PrefixMap is a key-value type collection where the key is assumed to be the prefix of the String for which later an answer is requested.
So the retrieval of the value is based on a startsWith() check of the requested input against each of
the stored prefixes. The value associated with the selected prefix is then returned.
An example use case is where mobile phone device models of a certain brand all start with the same substring. This data structure can be used to efficiently retrieve the best fitting prefix to find the associated value (i.e. the brand of the device).
Note that implementations may be constructed to match either case sensitive or case insensitive.
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptiondefault voidclear()The prefixmap will be empty after this call returns.default booleandefault booleancontainsPrefix(int[] prefix) Returnstrueif this map contains an exact mapping for the specified prefix.default booleancontainsPrefix(String prefix) Returnstrueif this map contains an exact mapping for the specified prefix.booleanReturnstrueif this map contains an exact mapping for the specified prefix.default booleandefault VReturn the value of theexactmatching prefix.Return the value of theexactmatching prefix.getAllMatches(int[] input) Returns List of all matches that have a value.getAllMatches(String input) Returns List of all matches that have a value.Returns List of all matches that have a value.default VgetLongestMatch(int[] input) Return the value of the longest matching prefix.default VgetLongestMatch(String input) Return the value of the longest matching prefix.Return the value of the longest matching prefix.default VgetShortestMatch(int[] input) Return the value of theshortestmatching prefix.default VgetShortestMatch(String input) Return the value of theshortestmatching prefix.Return the value of theshortestmatching prefix.default booleanisEmpty()keySet()Stored the specified value as the result for the specified prefix.default voidCopies all of the mappings from the specified map to this prefixmap.default Vdefault VRemoves the mapping for a prefix if present.intsize()default Collection<V> values()Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, entrySet, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Method Details
-
size
int size()- Specified by:
sizein interfaceMap<String,V extends Serializable> - Returns:
- the number of prefix-value mappings in this prefixmap
-
isEmpty
default boolean isEmpty()- Specified by:
isEmptyin interfaceMap<String,V extends Serializable> - Returns:
- true if empty.
-
putAll
Copies all of the mappings from the specified map to this prefixmap.- Specified by:
putAllin interfaceMap<String,V extends Serializable> - Parameters:
prefixesAndValues- mappings to be stored in this map- Throws:
NullPointerException- if one or more of the prefixes or values are null. If this happens the PrefixMap is in an undefined state.
-
put
Stored the specified value as the result for the specified prefix.
If for the specified prefix previously a value was present then the old value is replaced with the new value and the old value is returned.
Note that implementations may be constructed to store this value for either case sensitive or case insensitive matching during retrieval.
- Specified by:
putin interfaceMap<String,V extends Serializable> - Parameters:
prefix- prefix with which the specified value is to be associatedvalue- value to be associated with the specified prefix- Returns:
- the previous value of the specified
prefix, ornullif there was no mapping forprefix. - Throws:
NullPointerException- if either the prefix or value are null. If this happens the PrefixMap is unchanged.
-
remove
Removes the mapping for a prefix if present.
Note that implementations may be constructed to remove either case sensitive (only this exact value) or case insensitive (all case variations).
- Parameters:
prefix- prefix whose mapping is to be removed from the prefixmap- Returns:
- the previous value associated with
prefix(may be null). - Throws:
UnsupportedOperationException- if not implemented.
-
remove
- Specified by:
removein interfaceMap<String,V extends Serializable>
-
containsKey
- Specified by:
containsKeyin interfaceMap<String,V extends Serializable>
-
containsValue
- Specified by:
containsValuein interfaceMap<String,V extends Serializable>
-
get
Return the value of the
exactmatching prefix.The value returned is the stored prefix for which is true:
input.equals(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
prefix- The string for which we need value of the stored prefix- Returns:
- The value, null if not found.
-
get
Return the value of the
exactmatching prefix.The value returned is the stored prefix for which is true:
input.equals(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Specified by:
getin interfaceMap<String,V extends Serializable> - Parameters:
prefix- The string for which we need the stored value- Returns:
- The value, null if not found.
-
keySet
- Specified by:
keySetin interfaceMap<String,V extends Serializable>
-
values
- Specified by:
valuesin interfaceMap<String,V extends Serializable>
-
clear
default void clear()The prefixmap will be empty after this call returns.- Specified by:
clearin interfaceMap<String,V extends Serializable> - Throws:
UnsupportedOperationException- if theclearoperation is not supported by this map
-
containsPrefix
Returns
trueif this map contains an exact mapping for the specified prefix.Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
prefix- prefix whose presence in this prefixmap is to be checked- Returns:
trueif this map contains an the exact mapping for the specified prefix.
-
getShortestMatch
Return the value of the
shortestmatching prefix.The value returned is the shortest stored prefix for which is true:
input.startsWith(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
input- The string for which we need value of the stored prefix- Returns:
- The value, null if not found.
-
getLongestMatch
Return the value of the longest matching prefix.
The value returned is the longest stored prefix for which is true:
input.startsWith(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
input- The string for which we need value of the stored prefix- Returns:
- The value, null if not found.
-
getAllMatches
Returns List of all matches that have a value.
The list contains all non-null values for the prefix values where this is true:
input.startsWith(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
input- The string for which we need value of the stored prefix- Returns:
- The list of values, an empty List if nothing is found.
-
containsPrefix
default boolean containsPrefix(int[] prefix) Returns
trueif this map contains an exact mapping for the specified prefix.Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
prefix- prefix whose presence in this prefixmap is to be checked- Returns:
trueif this map contains an the exact mapping for the specified prefix.
-
getShortestMatch
Return the value of the
shortestmatching prefix.The value returned is the shortest stored prefix for which is true:
input.startsWith(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
input- The string (iterator of Unicode CodePoints) for which we need value of the stored prefix.- Returns:
- The value, null if not found.
-
getLongestMatch
Return the value of the longest matching prefix.
The value returned is the longest stored prefix for which is true:
input.startsWith(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
input- The string (iterator of Unicode CodePoints) for which we need value of the stored prefix.- Returns:
- The value, null if not found.
-
getAllMatches
Returns List of all matches that have a value.
The list contains all non-null values for the prefix values where this is true:
input.startsWith(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
input- The string (iterator of Unicode CodePoints) for which we need value of the stored prefix.- Returns:
- The list of values, an empty List if nothing is found.
-
containsPrefix
Returns
trueif this map contains an exact mapping for the specified prefix.Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
prefix- prefix whose presence in this prefixmap is to be checked- Returns:
trueif this map contains an the exact mapping for the specified prefix.
-
getShortestMatch
Return the value of the
shortestmatching prefix.The value returned is the shortest stored prefix for which is true:
input.startsWith(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
input- The string (iterator of Unicode CodePoints) for which we need value of the stored prefix.- Returns:
- The value, null if not found.
-
getLongestMatch
Return the value of the longest matching prefix.
The value returned is the longest stored prefix for which is true:
input.startsWith(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
input- The string (iterator of Unicode CodePoints) for which we need value of the stored prefix.- Returns:
- The value, null if not found.
-
getAllMatches
Returns List of all matches that have a value.
The list contains all non-null values for the prefix values where this is true:
input.startsWith(prefix).Note that implementations may be constructed to match either case sensitive or case insensitive.
- Parameters:
input- The string (iterator of Unicode CodePoints) for which we need value of the stored prefix.- Returns:
- The list of values, an empty List if nothing is found.
-