Package com.github.tommyettinger.ds
Class EnumFloatMap
java.lang.Object
com.github.tommyettinger.ds.EnumFloatMap
- All Implemented Interfaces:
Iterable<EnumFloatMap.Entry>
- Direct Known Subclasses:
EnumFloatOrderedMap
An unordered map where the keys are
This class never actually hashes keys in its primary operations (get(), put(), remove(), containsKey(), etc.), since it can rely on keys having an Enum type, and so having
The key universe is an important concept here; it is simply an array of all possible Enum values the EnumFloatMap can use as keys, in the specific order they are declared. You almost always get a key universe by calling
This class tries to be as compatible as possible with
Enums and values are primitive floats. Null keys are not allowed.
Unlike EnumMap, this does not require a Class at construction time, which can be useful for serialization
purposes. No allocation is done unless this is changing its table size and/or key universe.
This class never actually hashes keys in its primary operations (get(), put(), remove(), containsKey(), etc.), since it can rely on keys having an Enum type, and so having
Enum.ordinal() available. The ordinal allows constant-time access
to a guaranteed-unique int that will always be non-negative and less than the size of the key universe. The table of
possible values always starts sized to fit exactly as many values as there are keys in the key universe.
The key universe is an important concept here; it is simply an array of all possible Enum values the EnumFloatMap can use as keys, in the specific order they are declared. You almost always get a key universe by calling
MyEnum.values(), but you
can also use Class.getEnumConstants() for an Enum class. You can and generally should reuse key universes in order to
avoid allocations and/or save memory; the constructor EnumFloatMap(Enum[]) (with no values given) creates an empty EnumFloatMap with
a given key universe. If you need to use the zero-argument constructor, you can, and the key universe will be obtained from the
first key placed into the EnumFloatMap. You can also set the key universe with clearToUniverse(Enum[]), in the process of
clearing the map.
This class tries to be as compatible as possible with
EnumMap while using primitive keys,
though this expands on that where possible.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classstatic classstatic classstatic classstatic classstatic classstatic class -
Field Summary
FieldsModifier and TypeFieldDescriptionfloatReturned byget(Object)when no value exists for the given key, as well as some other methods to indicate that no value in the Map could be returned.protected EnumFloatMap.Entriesprotected EnumFloatMap.Entriesprotected EnumSetprotected EnumFloatMap.Keysprotected EnumFloatMap.Keysprotected EnumFloatMap.Valuesprotected EnumFloatMap.Valuesprotected float[] -
Constructor Summary
ConstructorsConstructorDescriptionEmpty constructor; using this will postpone creating the key universe and allocating the value table untilput(java.lang.Enum<?>, float)is first called (potentially indirectly).EnumFloatMap(EnumFloatMap map) Creates a new map identical to the specified EnumFloatMap.EnumFloatMap(Class<? extends Enum<?>> universeClass) Initializes this map so that it has exactly enough capacity as needed to contain each Enum constant defined by the ClassuniverseClass, assuming universeClass is non-null.EnumFloatMap(Enum<?>[] universe) Initializes this map so that it has exactly enough capacity as needed to contain each Enum constant defined inuniverse, assuming universe stores every possible constant in one Enum type.EnumFloatMap(Enum<?>[] keys, float[] values) Given two side-by-side arrays, one of Enum keys, one of float values, this constructs a map and inserts each pair of key and value into it.EnumFloatMap(Collection<? extends Enum<?>> keys, PrimitiveCollection.OfFloat values) Given two side-by-side collections, one of Enum keys, one of float values, this constructs a map and inserts each pair of key and value into it. -
Method Summary
Modifier and TypeMethodDescriptionappendTo(StringBuilder sb, String entrySeparator, boolean braces) appendTo(StringBuilder sb, String entrySeparator, String keyValueSeparator, boolean braces, Appender<Enum<?>> keyAppender, FloatAppender valueAppender) voidclear()Removes all the elements from this map.voidclearToUniverse(Class<? extends Enum<?>> universe) Removes all the elements from this map and can reset the universe of possible Enum items this can hold.voidclearToUniverse(Enum<?>[] universe) Removes all the elements from this map and can reset the universe of possible Enum items this can hold.voidcombine(EnumFloatMap other, com.github.tommyettinger.function.FloatFloatToFloatBiFunction remappingFunction) Simply callscombine(Enum, float, FloatFloatToFloatBiFunction)on this map using every key-value pair inother.floatcombine(Enum<?> key, float value, com.github.tommyettinger.function.FloatFloatToFloatBiFunction remappingFunction) Just like Map's merge() default method, but this doesn't use Java 8 APIs (so it should work on RoboVM), this uses primitive values, and this won't remove entries if the remappingFunction returns null (because that isn't possible with primitive types).floatcomputeIfAbsent(Enum<?> key, com.github.tommyettinger.function.ObjToFloatFunction<? super Enum<?>> mappingFunction) booleancontainsKey(Object key) booleancontainsValue(float value) Returns true if the specified value is in the map.entrySet()Returns a Set of Map.Entry, containing the entries in the map.booleanEnum<?>findKey(float value) Returns the key for the specified value, or null if it is not in the map.floatReturns the value for the specified key, ordefaultValueif the key is not in the map.floatgetAndIncrement(Enum<?> key, float defaultValue, float increment) Returns the key's current value and increments the stored value.floatGets the default value, afloatwhich is returned byget(Object)if the key is not found.floatgetOrDefault(Object key, float defaultValue) Returns the value for the specified key, or the given default value if the key is not in the map.Enum<?>[]Gets the current key universe; this is a technically-mutable array, but should never be modified.inthashCode()booleanisEmpty()Returns true if the map is empty.iterator()Reuses the iterator of the reusedEnumFloatMap.Entriesproduced byentrySet(); does not permit nested iteration.keySet()Returns aSetview of the keys contained in this map.booleannotEmpty()Returns true if the map has one or more items.static EnumFloatMapof()Constructs an empty map.static EnumFloatMapConstructs a map given alternating keys and values.static EnumFloatMapparse(String str, String entrySeparator, String keyValueSeparator, PartialParser<Enum<?>> keyParser) Creates a new map by parsing all ofstrwith the given PartialParser for keys, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".static EnumFloatMapparse(String str, String entrySeparator, String keyValueSeparator, PartialParser<Enum<?>> keyParser, boolean brackets) Creates a new map by parsing all ofstr(or ifbracketsis true, all but the first and last chars) with the given PartialParser for keys, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".static EnumFloatMapparse(String str, String entrySeparator, String keyValueSeparator, PartialParser<Enum<?>> keyParser, int offset, int length) Creates a new map by parsing the given subrange ofstrwith the given PartialParser for keys, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".floatReturns the old value associated with the specified key, or this map'sdefaultValueif there was no prior value.voidputAll(EnumFloatMap map) Puts every key-value pair in the given map into this, with the values from the given map overwriting the previous values if two keys are identical.voidputAll(ObjectFloatMap<Enum<?>> m) Copies all the mappings from the specified map to this map (optional operation).voidGiven two side-by-side arrays, one of keys, one of values, this inserts each pair of key and value into this map with put().voidGiven two side-by-side arrays, one of keys, one of values, this inserts each pair of key and value into this map with put().voidGiven two side-by-side arrays, one of keys, one of values, this inserts each pair of key and value into this map withput(Enum, float).voidputAll(Collection<? extends Enum<?>> keys, PrimitiveCollection.OfFloat values) Given two side-by-side collections, one of Enum keys, one of float values, this inserts each pair of key and value into this map with put().voidputLegible(String str, PartialParser<Enum<?>> keyParser) Adds items to this map drawn from the result oftoString(String)orappendTo(StringBuilder, String, boolean).voidputLegible(String str, String entrySeparator, PartialParser<Enum<?>> keyParser) Adds items to this map drawn from the result oftoString(String)orappendTo(StringBuilder, String, boolean).voidputLegible(String str, String entrySeparator, String keyValueSeparator, PartialParser<Enum<?>> keyParser) Adds items to this map drawn from the result oftoString(String)orappendTo(StringBuilder, String, String, boolean, Appender, FloatAppender).voidputLegible(String str, String entrySeparator, String keyValueSeparator, PartialParser<Enum<?>> keyParser, int offset, int length) Puts key-value pairs into this map drawn from the result oftoString(String)orappendTo(StringBuilder, String, String, boolean, Appender, FloatAppender).floatputOrDefault(Enum<?> key, float value, float defaultValue) Acts likeput(Enum, float), but uses the specifieddefaultValueinstead ofthe default value for this EnumFloatMap.voidAttempts to put alternating key-value pairs into this map, drawing a key, then a value frompairs, then another key, another value, and so on until another pair cannot be drawn.floatbooleanfloatvoidsetDefaultValue(float defaultValue) Sets the default value, afloatwhich is returned byget(Object)if the key is not found.intsize()Returns the number of key-value mappings in this map.toString()Delegates totoString(String, boolean)with the given entrySeparator and without braces.toString(String entrySeparator, String keyValueSeparator, boolean braces, Appender<Enum<?>> keyAppender, FloatAppender valueAppender) Makes a String from the contents of this ObjectObjectMap, but uses the givenAppenderandFloatAppenderto convert each key and each value to a customizable representation and append them to a temporary StringBuilder.values()Returns a PrimitiveCollection of the values in the map.static EnumFloatMapwith()Constructs an empty map.static EnumFloatMapConstructs a single-entry map given one key and one value.static EnumFloatMapConstructs a map given alternating keys and values.static EnumFloatMapConstructs a map given alternating keys and values.static EnumFloatMapwith(Enum<?> key0, Number value0, Enum<?> key1, Number value1, Enum<?> key2, Number value2, Enum<?> key3, Number value3) Constructs a map given alternating keys and values.static EnumFloatMapConstructs a map given alternating keys and values.static EnumFloatMapConstructs an empty map.static EnumFloatMapwithPrimitive(Enum<?> key0, float value0) Constructs a single-entry map given one key and one value.static EnumFloatMapwithPrimitive(Enum<?> key0, float value0, Enum<?> key1, float value1) Constructs a map given alternating keys and values.static EnumFloatMapwithPrimitive(Enum<?> key0, float value0, Enum<?> key1, float value1, Enum<?> key2, float value2) Constructs a map given alternating keys and values.static EnumFloatMapwithPrimitive(Enum<?> key0, float value0, Enum<?> key1, float value1, Enum<?> key2, float value2, Enum<?> key3, float value3) Constructs a map given alternating keys and values.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
keys
-
valueTable
protected float[] valueTable -
entries1
-
entries2
-
values1
-
values2
-
keys1
-
keys2
-
defaultValue
public float defaultValueReturned byget(Object)when no value exists for the given key, as well as some other methods to indicate that no value in the Map could be returned. Defaults tonull.
-
-
Constructor Details
-
EnumFloatMap
public EnumFloatMap()Empty constructor; using this will postpone creating the key universe and allocating the value table untilput(java.lang.Enum<?>, float)is first called (potentially indirectly). You can also useclearToUniverse(java.lang.Enum<?>[])to set the key universe and value table. -
EnumFloatMap
Initializes this map so that it has exactly enough capacity as needed to contain each Enum constant defined inuniverse, assuming universe stores every possible constant in one Enum type. This map will start empty. You almost always obtain universe from callingvalues()on an Enum type, and you can share one reference to one Enum array across many EnumFloatMap instances if you don't modify the shared array. Sharing the same universe helps save some memory if you have (very) many EnumFloatMap instances.- Parameters:
universe- almost always, the result of callingvalues()on an Enum type; used directly, not copied
-
EnumFloatMap
Initializes this map so that it has exactly enough capacity as needed to contain each Enum constant defined by the ClassuniverseClass, assuming universeClass is non-null. This simply callsEnumFloatMap(Enum[])for convenience. Note that this constructor allocates a new array of Enum constants each time it is called, where if you useEnumFloatMap(Enum[]), you can reuse an unmodified array to reduce allocations.- Parameters:
universeClass- the Class of an Enum type that defines the universe of valid Enum items this can hold
-
EnumFloatMap
Creates a new map identical to the specified EnumFloatMap. This will share a key universe with the given EnumFloatMap, if non-null.- Parameters:
map- an EnumFloatMap to copy
-
EnumFloatMap
Given two side-by-side arrays, one of Enum keys, one of float values, this constructs a map and inserts each pair of key and value into it. If keys and values have different lengths, this only uses the length of the smaller array.- Parameters:
keys- an array of Enum keysvalues- an array of float values
-
EnumFloatMap
Given two side-by-side collections, one of Enum keys, one of float values, this constructs a map and inserts each pair of key and value into it. If keys and values have different lengths, this only uses the length of the smaller collection.- Parameters:
keys- a Collection of Enum keysvalues- a PrimitiveCollection of float values
-
-
Method Details
-
putAll
Given two side-by-side collections, one of Enum keys, one of float values, this inserts each pair of key and value into this map with put().- Parameters:
keys- a Collection of Enum keysvalues- a PrimitiveCollection of float values
-
put
Returns the old value associated with the specified key, or this map'sdefaultValueif there was no prior value. If this EnumFloatMap does not yet have a key universe and/or value table, this gets the key universe fromkeyand uses it from now on for this EnumFloatMap.- Parameters:
key- the Enum key to try to place into this EnumFloatMapvalue- the float value to associate withkey- Returns:
- the previous value associated with
key, orgetDefaultValue()if the given key was not present
-
putOrDefault
Acts likeput(Enum, float), but uses the specifieddefaultValueinstead ofthe default value for this EnumFloatMap.- Parameters:
key- the Enum key to try to place into this EnumFloatMapvalue- the float value to associate withkeydefaultValue- the float value to return ifkeywas not already present- Returns:
- the previous value associated with
key, or the givendefaultValueif the given key was not present
-
putAll
Puts every key-value pair in the given map into this, with the values from the given map overwriting the previous values if two keys are identical. If this EnumFloatMap doesn't yet have a key universe, it will now share a key universe with the givenmap. Even if the given EnumFloatMap is empty, it can still be used to obtain a key universe for this EnumFloatMap (assuming it has a key universe).- Parameters:
map- another EnumFloatMap with an equivalent key universe
-
putAll
Given two side-by-side arrays, one of keys, one of values, this inserts each pair of key and value into this map with put(). Delegates toputAll(Enum[], int, float[], int, int).- Parameters:
keys- an array of keysvalues- an array of values
-
putAll
Given two side-by-side arrays, one of keys, one of values, this inserts each pair of key and value into this map with put(). Delegates toputAll(Enum[], int, float[], int, int).- Parameters:
keys- an array of keysvalues- an array of valueslength- how many items from keys and values to insert, at-most
-
putAll
Given two side-by-side arrays, one of keys, one of values, this inserts each pair of key and value into this map withput(Enum, float).- Parameters:
keys- an array of keyskeyOffset- the first index in keys to insertvalues- an array of valuesvalueOffset- the first index in values to insertlength- how many items from keys and values to insert, at-most
-
get
Returns the value for the specified key, ordefaultValueif the key is not in the map. Note thatdefaultValueis often null, which is also a valid value that can be assigned to a legitimate key. Checking that the result of this method is null does not guarantee that thekeyis not present.- Parameters:
key- a non-null Object that should always be an Enum
-
getOrDefault
Returns the value for the specified key, or the given default value if the key is not in the map. -
remove
-
putAll
Copies all the mappings from the specified map to this map (optional operation). The effect of this call is equivalent to that of callingput(k, v)on this map once for each mapping from keykto valuevin the specified map. The behavior of this operation is undefined if the specified map is modified while the operation is in progress.
Note thatputAll(EnumFloatMap)is more specific and can be more efficient by using the internal details of this class.- Parameters:
m- mappings to be stored in this map- Throws:
UnsupportedOperationException- if theputAlloperation is not supported by this mapClassCastException- if the class of a key or value in the specified map prevents it from being stored in this mapNullPointerException- if the specified map is null, or if this map does not permit null keys or values, and the specified map contains null keys or valuesIllegalArgumentException- if some property of a key or value in the specified map prevents it from being stored in this map
-
getAndIncrement
Returns the key's current value and increments the stored value. If the key is not in the map, defaultValue + increment is put into the map and defaultValue is returned. -
notEmpty
public boolean notEmpty()Returns true if the map has one or more items. -
size
public int size()Returns the number of key-value mappings in this map.- Returns:
- the number of key-value mappings in this map
-
isEmpty
public boolean isEmpty()Returns true if the map is empty. -
getDefaultValue
public float getDefaultValue()Gets the default value, afloatwhich is returned byget(Object)if the key is not found. If not changed, the default value is 0.- Returns:
- the current default value
-
setDefaultValue
public void setDefaultValue(float defaultValue) Sets the default value, afloatwhich is returned byget(Object)if the key is not found. If not changed, the default value is 0. Note thatgetOrDefault(Object, float)is also available, which allows specifying a "not-found" value per-call.- Parameters:
defaultValue- may be any float; should usually be one that doesn't occur as a typical value
-
clear
public void clear()Removes all the elements from this map. The map will be empty after this call returns. This does not change the universe of possible Enum items this can hold. -
clearToUniverse
Removes all the elements from this map and can reset the universe of possible Enum items this can hold. The map will be empty after this call returns. This changes the universe of possible Enum items this can hold to matchuniverse. Ifuniverseis null, this resets this map to the state it would have afterEnumFloatMap()was called. If the table this would need is the same size as or smaller than the current table (such as ifuniverseis the same as the universe here), this will not allocate, but will still clear any items this holds and will set the universe to the given one. Otherwise, this allocates and uses a new table of a larger size, with nothing in it, and uses the given universe. This always usesuniversedirectly, without copying.
This can be useful to allow an EnumFloatMap that was created withEnumFloatMap()to share a universe with other EnumFloatMaps.- Parameters:
universe- the universe of possible Enum items this can hold; almost always produced byvalues()on an Enum
-
clearToUniverse
Removes all the elements from this map and can reset the universe of possible Enum items this can hold. The map will be empty after this call returns. This changes the universe of possible Enum items this can hold to match the Enum constants inuniverse. Ifuniverseis null, this resets this map to the state it would have afterEnumFloatMap()was called. If the table this would need is the same size as or smaller than the current table (such as ifuniverseis the same as the universe here), this will not allocate, but will still clear any items this holds and will set the universe to the given one. Otherwise, this allocates and uses a new table of a larger size, with nothing in it, and uses the given universe. This callsClass.getEnumConstants()if universe is non-null, which allocates a new array.
You may want to prefer callingclearToUniverse(Enum[])(the overload that takes an array), because it can be used to share one universe array between many EnumFloatMap instances. This overload, given a Class, has to callClass.getEnumConstants()and thus allocate a new array each time this is called.- Parameters:
universe- the Class of an Enum type that stores the universe of possible Enum items this can hold
-
getUniverse
Gets the current key universe; this is a technically-mutable array, but should never be modified. To set the universe on an existing EnumFloatMap (with existing contents), you can useclearToUniverse(Enum[]). If an EnumFloatMap has not been initialized, just adding a key will set the key universe to match the given item.- Returns:
- the current key universe
-
containsValue
public boolean containsValue(float value) Returns true if the specified value is in the map. Note this traverses the entire map and compares every value, which may be an expensive operation. -
containsKey
-
findKey
Returns the key for the specified value, or null if it is not in the map. Note this traverses the entire map and compares every value, which may be an expensive operation.- Returns:
- the corresponding Enum if the value was found, or null otherwise
-
hashCode
public int hashCode() -
equals
-
toString
-
toString
Delegates totoString(String, boolean)with the given entrySeparator and without braces. This is different fromtoString(), which includes braces by default.- Parameters:
entrySeparator- how to separate entries, such as", "- Returns:
- a new String representing this map
-
toString
-
toString
public String toString(String entrySeparator, String keyValueSeparator, boolean braces, Appender<Enum<?>> keyAppender, FloatAppender valueAppender) Makes a String from the contents of this ObjectObjectMap, but uses the givenAppenderandFloatAppenderto convert each key and each value to a customizable representation and append them to a temporary StringBuilder. To use the default toString representation, you can useAppender::appendas an appender, or to use the readable EnumEnum.name(), useAppender.ENUM_NAME_APPENDER. UseFloatAppender.DEFAULTorFloatAppender.READABLEfor human-readable or source-code-readable results, respectively.- Parameters:
entrySeparator- how to separate entries, such as", "keyValueSeparator- how to separate each key from its value, such as"="or":"braces- true to wrap the output in curly braces, or false to omit themkeyAppender- a function that takes a StringBuilder and an Enum, and returns the modified StringBuildervalueAppender- a function that takes a StringBuilder and a float, and returns the modified StringBuilder- Returns:
- a new String representing this map
-
appendTo
-
appendTo
public StringBuilder appendTo(StringBuilder sb, String entrySeparator, String keyValueSeparator, boolean braces, Appender<Enum<?>> keyAppender, FloatAppender valueAppender) Appends to a StringBuilder from the contents of this ObjectObjectMap, but uses the givenAppenderandAppenderto convert each key and each value to a customizable representation and append them to a StringBuilder. To use the default toString representation, you can useAppender::appendas an appender, or to use the readable EnumEnum.name(), useAppender.ENUM_NAME_APPENDER. UseFloatAppender.DEFAULTorFloatAppender.READABLEfor human-readable or source-code-readable results, respectively.- Parameters:
sb- a StringBuilder that this can append toentrySeparator- how to separate entries, such as", "keyValueSeparator- how to separate each key from its value, such as"="or":"braces- true to wrap the output in curly braces, or false to omit themkeyAppender- a function that takes a StringBuilder and an Enum, and returns the modified StringBuildervalueAppender- a function that takes a StringBuilder and a float, and returns the modified StringBuilder- Returns:
sb, with the appended keys and values of this map
-
replace
-
computeIfAbsent
-
remove
-
combine
public float combine(Enum<?> key, float value, com.github.tommyettinger.function.FloatFloatToFloatBiFunction remappingFunction) Just like Map's merge() default method, but this doesn't use Java 8 APIs (so it should work on RoboVM), this uses primitive values, and this won't remove entries if the remappingFunction returns null (because that isn't possible with primitive types). This uses a functional interface from Funderby.- Parameters:
key- key with which the resulting value is to be associatedvalue- the value to be merged with the existing value associated with the key or, if no existing value is associated with the key, to be associated with the keyremappingFunction- given a float from this and the floatvalue, this should return what float to use- Returns:
- the value now associated with key
-
combine
public void combine(EnumFloatMap other, com.github.tommyettinger.function.FloatFloatToFloatBiFunction remappingFunction) Simply callscombine(Enum, float, FloatFloatToFloatBiFunction)on this map using every key-value pair inother. Ifotherisn't empty, calling this will probably modify this map, though this depends on theremappingFunction.- Parameters:
other- a non-null ObjectFloatMap (or subclass) with a compatible key typeremappingFunction- given a float value from this and a value from other, this should return what float to use
-
iterator
Reuses the iterator of the reusedEnumFloatMap.Entriesproduced byentrySet(); does not permit nested iteration. Iterate overEntries(EnumFloatMap)if you need nested or multithreaded iteration. You can remove an Entry from this EnumFloatMap using this Iterator.- Specified by:
iteratorin interfaceIterable<EnumFloatMap.Entry>- Returns:
- an
IteratoroverMap.Entrykey-value pairs; remove is supported.
-
keySet
Returns aSetview of the keys contained in this map. The set is backed by the map, so changes to the map are reflected in the set, and vice versa. If the map is modified while an iteration over the set is in progress (except through the iterator's ownremoveoperation), the results of the iteration are undefined. The set supports element removal, which removes the corresponding mapping from the map, via theIterator.remove,Set.remove,removeAll,retainAll, andclearoperations. It does not support theaddoraddAlloperations.Note that the same Collection instance is returned each time this method is called. Use the
EnumFloatMap.Keysconstructor for nested or multithreaded iteration.- Returns:
- a set view of the keys contained in this map
-
values
Returns a PrimitiveCollection of the values in the map. Remove is supported. Note that the same PrimitiveCollection instance is returned each time this method is called. Use theEnumFloatMap.Valuesconstructor for nested or multithreaded iteration.- Returns:
- a
PrimitiveCollectionof float values
-
entrySet
Returns a Set of Map.Entry, containing the entries in the map. Remove is supported by the Set's iterator. Note that the same iterator instance is returned each time this method is called. Use theEnumFloatMap.Entriesconstructor for nested or multithreaded iteration.- Returns:
- a
SetofEnumFloatMap.Entrykey-value pairs
-
with
Constructs an empty map. This is usually less useful than just using the constructor, but can be handy in some code-generation scenarios when you don't know how many arguments you will have.- Returns:
- a new map containing nothing
-
with
Constructs a single-entry map given one key and one value. This is mostly useful as an optimization forwith(Enum, Number, Object...)when there's no "rest" of the keys or values. Like the more-argument with(), this will convert its Number value to a primitive float, regardless of which Number type was used.- Parameters:
key0- the first and only Enum keyvalue0- the first and only value; will be converted to primitive float- Returns:
- a new map containing just the entry mapping key0 to value0
-
with
Constructs a map given alternating keys and values. This is mostly useful as an optimization forwith(Enum, Number, Object...)when there's no "rest" of the keys or values. Like the more-argument with(), this will convert its Number values to primitive floats, regardless of which Number type was used.- Parameters:
key0- an Enum keyvalue0- a Number for a value; will be converted to primitive floatkey1- an Enum keyvalue1- a Number for a value; will be converted to primitive float- Returns:
- a new map containing the given key-value pairs
-
with
public static EnumFloatMap with(Enum<?> key0, Number value0, Enum<?> key1, Number value1, Enum<?> key2, Number value2) Constructs a map given alternating keys and values. This is mostly useful as an optimization forwith(Enum, Number, Object...)when there's no "rest" of the keys or values. Like the more-argument with(), this will convert its Number values to primitive floats, regardless of which Number type was used.- Parameters:
key0- an Enum keyvalue0- a Number for a value; will be converted to primitive floatkey1- an Enum keyvalue1- a Number for a value; will be converted to primitive floatkey2- an Enum keyvalue2- a Number for a value; will be converted to primitive float- Returns:
- a new map containing the given key-value pairs
-
with
public static EnumFloatMap with(Enum<?> key0, Number value0, Enum<?> key1, Number value1, Enum<?> key2, Number value2, Enum<?> key3, Number value3) Constructs a map given alternating keys and values. This is mostly useful as an optimization forwith(Enum, Number, Object...)when there's no "rest" of the keys or values. Like the more-argument with(), this will convert its Number values to primitive floats, regardless of which Number type was used.- Parameters:
key0- an Enum keyvalue0- a Number for a value; will be converted to primitive floatkey1- an Enum keyvalue1- a Number for a value; will be converted to primitive floatkey2- an Enum keyvalue2- a Number for a value; will be converted to primitive floatkey3- an Enum keyvalue3- a Number for a value; will be converted to primitive float- Returns:
- a new map containing the given key-value pairs
-
with
Constructs a map given alternating keys and values. This can be useful in some code-generation scenarios, or when you want to make a map conveniently by-hand and have it populated at the start. You can also useEnumFloatMap(Enum[], float[]), which takes all keys and then all values. This needs all keys to be Enum constants. All values must be some type of boxed Number, such asIntegerorDouble, and will be converted to primitivefloats. Any keys that don't have Enum as their type or values that aren'tNumbers have that entry skipped.- Parameters:
key0- the first Enum keyvalue0- the first value; will be converted to primitive floatrest- an array or varargs of alternating Enum, Number, Enum, Number... elements- Returns:
- a new map containing the given keys and values
-
putPairs
Attempts to put alternating key-value pairs into this map, drawing a key, then a value frompairs, then another key, another value, and so on until another pair cannot be drawn. All values must be some type of boxed Number, such asIntegerorDouble, and will be converted to primitivefloats. Any keys that don't have some Enum as their type or values that aren'tNumbers have that entry skipped.
If any item inpairscannot be cast to the Enum or Number type for its position in the arguments, that pair is ignored and neither that key nor value is put into the map. If any key is null, that pair is ignored, as well. Ifpairsis an Object array that is null, the entire call to putPairs() is ignored. If the length ofpairsis odd, the last item (which will be unpaired) is ignored.- Parameters:
pairs- an array or varargs of alternating Enum, Number, Enum, Number... elements
-
putLegible
Adds items to this map drawn from the result oftoString(String)orappendTo(StringBuilder, String, boolean). Every key-value pair should be separated by", ", and every key should be followed by"="before the value (whichtoString()does). A PartialParser will be used to parse keys from sections ofstr, and values are parsed withBase.readFloat(CharSequence, int, int). Usually, keyParser is produced byPartialParser.enumParser(ObjToObjFunction). Any brackets inside the given range of characters will ruin the parsing, so increase offset by 1 and reduce length by 2 if the original String had brackets added to it.- Parameters:
str- a String containing parseable textkeyParser- a PartialParser that returns aEnum<?>key from a section ofstr, typically produced byPartialParser.enumParser(ObjToObjFunction)
-
putLegible
Adds items to this map drawn from the result oftoString(String)orappendTo(StringBuilder, String, boolean). Every key-value pair should be separated byentrySeparator, and every key should be followed by "=" before the value (whichtoString(String)does). A PartialParser will be used to parse keys from sections ofstr, and values are parsed withBase.readFloat(CharSequence, int, int). Usually, keyParser is produced byPartialParser.enumParser(ObjToObjFunction). Any brackets inside the given range of characters will ruin the parsing, so increase offset by 1 and reduce length by 2 if the original String had brackets added to it.- Parameters:
str- a String containing parseable textentrySeparator- the String separating every key-value pairkeyParser- a PartialParser that returns aEnum<?>key from a section ofstr, typically produced byPartialParser.enumParser(ObjToObjFunction)
-
putLegible
public void putLegible(String str, String entrySeparator, String keyValueSeparator, PartialParser<Enum<?>> keyParser) Adds items to this map drawn from the result oftoString(String)orappendTo(StringBuilder, String, String, boolean, Appender, FloatAppender). A PartialParser will be used to parse keys from sections ofstr, and values are parsed withBase.readFloat(CharSequence, int, int). Usually, keyParser is produced byPartialParser.enumParser(ObjToObjFunction). Any brackets inside the given range of characters will ruin the parsing, so increase offset by 1 and reduce length by 2 if the original String had brackets added to it.- Parameters:
str- a String containing parseable textentrySeparator- the String separating every key-value pairkeyValueSeparator- the String separating every key from its corresponding valuekeyParser- a PartialParser that returns aEnum<?>key from a section ofstr, typically produced byPartialParser.enumParser(ObjToObjFunction)
-
putLegible
public void putLegible(String str, String entrySeparator, String keyValueSeparator, PartialParser<Enum<?>> keyParser, int offset, int length) Puts key-value pairs into this map drawn from the result oftoString(String)orappendTo(StringBuilder, String, String, boolean, Appender, FloatAppender). A PartialParser will be used to parse keys from sections ofstr, and values are parsed withBase.readFloat(CharSequence, int, int). Usually, keyParser is produced byPartialParser.enumParser(ObjToObjFunction). Any brackets inside the given range of characters will ruin the parsing, so increase offset by 1 and reduce length by 2 if the original String had brackets added to it.- Parameters:
str- a String containing parseable textentrySeparator- the String separating every key-value pairkeyValueSeparator- the String separating every key from its corresponding valuekeyParser- a PartialParser that returns aEnum<?>key from a section ofstr, typically produced byPartialParser.enumParser(ObjToObjFunction)offset- the first position to read parseable text from instrlength- how many chars to read; -1 is treated as maximum length
-
parse
public static EnumFloatMap parse(String str, String entrySeparator, String keyValueSeparator, PartialParser<Enum<?>> keyParser) Creates a new map by parsing all ofstrwith the given PartialParser for keys, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".
ThekeyParseris often produced byPartialParser.enumParser(ObjToObjFunction).- Parameters:
str- a String containing parseable textentrySeparator- the String separating every key-value pairkeyValueSeparator- the String separating every key from its corresponding valuekeyParser- a PartialParser that returns anEnumkey from a section ofstr
-
parse
public static EnumFloatMap parse(String str, String entrySeparator, String keyValueSeparator, PartialParser<Enum<?>> keyParser, boolean brackets) Creates a new map by parsing all ofstr(or ifbracketsis true, all but the first and last chars) with the given PartialParser for keys, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".
ThekeyParseris often produced byPartialParser.enumParser(ObjToObjFunction).- Parameters:
str- a String containing parseable textentrySeparator- the String separating every key-value pairkeyValueSeparator- the String separating every key from its corresponding valuekeyParser- a PartialParser that returns anEnumkey from a section ofstrbrackets- if true, the first and last chars instrwill be ignored
-
parse
public static EnumFloatMap parse(String str, String entrySeparator, String keyValueSeparator, PartialParser<Enum<?>> keyParser, int offset, int length) Creates a new map by parsing the given subrange ofstrwith the given PartialParser for keys, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".
ThekeyParseris often produced byPartialParser.enumParser(ObjToObjFunction).- Parameters:
str- a String containing parseable textentrySeparator- the String separating every key-value pairkeyValueSeparator- the String separating every key from its corresponding valuekeyParser- a PartialParser that returns anEnumkey from a section ofstroffset- the first position to read parseable text from instrlength- how many chars to read; -1 is treated as maximum length
-
withPrimitive
Constructs an empty map. This is usually less useful than just using the constructor, but can be handy in some code-generation scenarios when you don't know how many arguments you will have.- Returns:
- a new map containing nothing
-
withPrimitive
Constructs a single-entry map given one key and one value. This is mostly useful as an optimization forwith(Enum, Number, Object...)when there's no "rest" of the keys or values. Unlike with(), this takes unboxed float as its value type, and will not box it.- Parameters:
key0- an Enum for a keyvalue0- a float for a value- Returns:
- a new map containing just the entry mapping key0 to value0
-
withPrimitive
Constructs a map given alternating keys and values. This is mostly useful as an optimization forwith(Enum, Number, Object...)when there's no "rest" of the keys or values. Unlike with(), this takes unboxed float as its value type, and will not box it.- Parameters:
key0- an Enum keyvalue0- a float for a valuekey1- an Enum keyvalue1- a float for a value- Returns:
- a new map containing the given key-value pairs
-
withPrimitive
public static EnumFloatMap withPrimitive(Enum<?> key0, float value0, Enum<?> key1, float value1, Enum<?> key2, float value2) Constructs a map given alternating keys and values. This is mostly useful as an optimization forwith(Enum, Number, Object...)when there's no "rest" of the keys or values. Unlike with(), this takes unboxed float as its value type, and will not box it.- Parameters:
key0- an Enum keyvalue0- a float for a valuekey1- an Enum keyvalue1- a float for a valuekey2- an Enum keyvalue2- a float for a value- Returns:
- a new map containing the given key-value pairs
-
withPrimitive
public static EnumFloatMap withPrimitive(Enum<?> key0, float value0, Enum<?> key1, float value1, Enum<?> key2, float value2, Enum<?> key3, float value3) Constructs a map given alternating keys and values. This is mostly useful as an optimization forwith(Enum, Number, Object...)when there's no "rest" of the keys or values. Unlike with(), this takes unboxed float as its value type, and will not box it.- Parameters:
key0- an Enum keyvalue0- a float for a valuekey1- an Enum keyvalue1- a float for a valuekey2- an Enum keyvalue2- a float for a valuekey3- an Enum keyvalue3- a float for a value- Returns:
- a new map containing the given key-value pairs
-
of
Constructs an empty map. This is usually less useful than just using the constructor, but can be handy in some code-generation scenarios when you don't know how many arguments you will have. This is an alias forwith().- Returns:
- a new map containing nothing
-
of
Constructs a map given alternating keys and values. This can be useful in some code-generation scenarios, or when you want to make a map conveniently by-hand and have it populated at the start. You can also useEnumFloatMap(Enum[], float[]), which takes all keys and then all values. This needs all keys to be Enum constants. All values must be some type of boxed Number, such asIntegerorDouble, and will be converted to primitivefloats. Any keys that don't have Enum as their type or values that aren'tNumbers have that entry skipped. This is an alias forwith(Enum, Number, Object...).- Parameters:
key0- the first Enum keyvalue0- the first value; will be converted to primitive floatrest- an array or varargs of alternating Enum, Number, Enum, Number... elements- Returns:
- a new map containing the given keys and values
-