Class LongObjectOrderedMap<V>
- All Implemented Interfaces:
Arrangeable,Ordered.OfLong,Iterable<LongObjectMap.Entry<V>>
LongObjectMap that also stores keys in an LongList using the insertion order. Null keys are not allowed. No
allocation is done except when growing the table size.
Iteration over the entrySet(), keySet(), and values() is ordered and faster than an unordered map. Keys
can also be accessed and the order changed using order(). There is some additional overhead for put and remove.
This class performs fast contains (typically O(1), worst case O(n) but that is rare in practice). Remove is somewhat slower due
to order(). Add may be slightly slower, depending on hash collisions. Hashcodes are rehashed to reduce
collisions and the need to resize. Load factors greater than 0.91 greatly increase the chances to resize to the next higher POT
size.
Unordered sets and maps are not designed to provide especially fast iteration. Iteration is faster with Ordered types like
ObjectOrderedSet and LongObjectOrderedMap.
You can customize most behavior of this map by extending it. LongObjectMap.place(long) can be overridden to change how hashCodes
are calculated (which can be useful for types like StringBuilder that don't implement hashCode()), and
LongObjectMap.locateKey(long) can be overridden to change how equality is calculated.
This implementation uses linear probing with the backward shift algorithm for removal. It tries different hashes from a simple family, with the hash changing on resize. Linear probing continues to work even when all hashCodes collide, just more slowly.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classstatic classNested classes/interfaces inherited from class com.github.tommyettinger.ds.LongObjectMap
LongObjectMap.Entries<V>, LongObjectMap.Entry<V>, LongObjectMap.EntryIterator<V>, LongObjectMap.KeyIterator<V>, LongObjectMap.Keys<V>, LongObjectMap.MapIterator<V>, LongObjectMap.ValueIterator<V>, LongObjectMap.Values<V>Nested classes/interfaces inherited from interface com.github.tommyettinger.ds.Arrangeable
Arrangeable.ArrangeableList<T> -
Field Summary
FieldsFields inherited from class com.github.tommyettinger.ds.LongObjectMap
defaultValue, entries1, entries2, hashMultiplier, hasZeroValue, keys1, keys2, keyTable, loadFactor, mask, shift, size, threshold, values1, values2, valueTable, zeroValue -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new map with an initial capacity ofUtilities.getDefaultTableCapacity()and a load factor ofUtilities.getDefaultLoadFactor().LongObjectOrderedMap(int initialCapacity) Creates a new map with the given starting capacity and a load factor ofUtilities.getDefaultLoadFactor().LongObjectOrderedMap(int initialCapacity, float loadFactor) Creates a new map with the specified initial capacity and load factor.LongObjectOrderedMap(int initialCapacity, float loadFactor, OrderType ordering) Creates a new map with the specified initial capacity and load factor.LongObjectOrderedMap(int initialCapacity, OrderType ordering) Creates a new map with the given starting capacity and a load factor ofUtilities.getDefaultLoadFactor().LongObjectOrderedMap(long[] keys, V[] values) Given two side-by-side arrays, one of keys, one of values, this constructs a map and inserts each pair of key and value into it.LongObjectOrderedMap(long[] keys, V[] values, OrderType ordering) Given two side-by-side arrays, one of keys, one of values, this constructs a map and inserts each pair of key and value into it.LongObjectOrderedMap(LongObjectMap<? extends V> map) Creates a new map identical to the specified map.LongObjectOrderedMap(LongObjectMap<? extends V> map, OrderType ordering) Creates a new map identical to the specified map.LongObjectOrderedMap(LongObjectOrderedMap<? extends V> map) Creates a new map identical to the specified map.LongObjectOrderedMap(LongObjectOrderedMap<? extends V> other, int offset, int count) Creates a new set by copyingcountitems from the given LongObjectOrderedMap, starting atoffsetin that Map, into this.LongObjectOrderedMap(LongObjectOrderedMap<? extends V> other, int offset, int count, OrderType ordering) Creates a new set by copyingcountitems from the given LongObjectOrderedMap, starting atoffsetin that Map, into this.LongObjectOrderedMap(OrderType ordering) Creates a new map with an initial capacity ofUtilities.getDefaultTableCapacity()and a load factor ofUtilities.getDefaultLoadFactor().LongObjectOrderedMap(PrimitiveCollection.OfLong keys, Collection<? extends V> values) Given two side-by-side collections, one of keys, one of values, this constructs a map and inserts each pair of key and value into it.LongObjectOrderedMap(PrimitiveCollection.OfLong keys, Collection<? extends V> values, OrderType ordering) Given two side-by-side collections, one of keys, one of values, this constructs a map and inserts each pair of key and value into it. -
Method Summary
Modifier and TypeMethodDescriptionbooleanalter(long before, long after) Changes the keybeforetoafterwithout changing its position in the order or its value.booleanalterAt(int index, long after) Changes the key at the givenindexin the order toafter, without changing the ordering of other entries or any values.appendTo(StringBuilder sb, String entrySeparator, String keyValueSeparator, boolean braces, LongAppender keyAppender, Appender<V> valueAppender) Appends to a StringBuilder from the contents of this LongObjectOrderedMap, but uses the givenLongAppenderandAppenderto convert each key and each value to a customizable representation and append them to a StringBuilder.voidclear()voidclear(int maximumCapacity) Clears the map and reduces the size of the backing arrays to be the specified capacity / loadFactor, if they are larger.voidensureCapacity(int additionalCapacity) Increases the size of the backing array to accommodate the specified number of additional items / loadFactor.entrySet()Returns a Set of Map.Entry, containing the entries in the map.getAt(int index) Gets the V value at the givenindexin the insertion order.iterator()Reuses the iterator of the reusedLongObjectMap.Entriesproduced byentrySet(); does not permit nested iteration.longkeyAt(int index) Gets the long key at the givenindexin the insertion order.keySet()Returns aSetview of the keys contained in this map.order()Gets the LongList of keys in the order this class will iterate through them.static <V> LongObjectOrderedMap<V>parse(String str, String entrySeparator, String keyValueSeparator, PartialParser<V> valueParser) Creates a new map by parsing all ofstrwith the given PartialParser for values, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".static <V> LongObjectOrderedMap<V>parse(String str, String entrySeparator, String keyValueSeparator, PartialParser<V> valueParser, 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 values, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".static <V> LongObjectOrderedMap<V>parse(String str, String entrySeparator, String keyValueSeparator, PartialParser<V> valueParser, int offset, int length) Creates a new map by parsing the given subrange ofstrwith the given PartialParser for values, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".Returns the old value associated with the specified key, or this map'sLongObjectMap.defaultValueif there was no prior value.Puts the given key and value into this map at the given index in its order.voidputAll(int insertionIndex, LongObjectOrderedMap<? extends V> other, int offset, int count) Adds up tocountentries, starting fromoffset, in the mapotherto this set, inserting starting atinsertionIndexin the iteration order.voidputAll(LongObjectOrderedMap<? extends V> 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(LongObjectOrderedMap<? extends V> other, int offset, int count) Adds up tocountentries, starting fromoffset, in the mapotherto this set, inserting at the end of the iteration order.putOrDefault(long key, V value, V defaultValue) Returns the old value associated with the specified key, or the givendefaultValueif there was no prior value.remove(long key) removeAt(int index) Removes the entry at the given index in the order, returning the value of that entry.voidremoveRange(int start, int end) Removes the items between the specified start index, inclusive, and end index, exclusive.Changes the value at a specifiedindexin the iteration order tov, without changing keys at all.voidsort()Sorts this LongObjectOrderedMap in-place by the keys' natural ordering.voidsort(LongComparator comp) Sorts this LongObjectOrderedMap in-place by the given LongComparator used on the keys.voidsortByValue(Comparator<V> comp) Sorts this LongObjectOrderedMap in-place by the given Comparator used on the values.voidtruncate(int newSize) Reduces the size of the map to the specified size.values()Returns a Collection for the values in the map.static <V> LongObjectOrderedMap<V>with()Constructs an empty map given the key type as a generic type argument.static <V> LongObjectOrderedMap<V>Constructs a single-entry map given one key and one value.static <V> LongObjectOrderedMap<V>Constructs a map given alternating keys and values.static <V> LongObjectOrderedMap<V>Constructs a map given alternating keys and values.static <V> LongObjectOrderedMap<V>Constructs a map given alternating keys and values.static <V> LongObjectOrderedMap<V>Constructs a map given alternating keys and values.static <V> LongObjectOrderedMap<V>Constructs an empty map given the key type as a generic type argument.static <V> LongObjectOrderedMap<V>withPrimitive(long key0, V value0) Constructs a single-entry map given one key and one value.static <V> LongObjectOrderedMap<V>withPrimitive(long key0, V value0, long key1, V value1) Constructs a map given alternating keys and values.static <V> LongObjectOrderedMap<V>withPrimitive(long key0, V value0, long key1, V value1, long key2, V value2) Constructs a map given alternating keys and values.static <V> LongObjectOrderedMap<V>withPrimitive(long key0, V value0, long key1, V value1, long key2, V value2, long key3, V value3) Constructs a map given alternating keys and values.Methods inherited from class com.github.tommyettinger.ds.LongObjectMap
appendTo, combine, combine, computeIfAbsent, containsKey, containsValue, equals, findKey, forEach, get, getDefaultValue, getHashMultiplier, getLoadFactor, getOrDefault, getTableSize, hashCode, isEmpty, locateKey, merge, notEmpty, place, putAll, putAll, putAll, putAll, putAll, putIfAbsent, putLegible, putLegible, putLegible, putLegible, putPairs, putResize, remove, replace, replace, replaceAll, resize, setDefaultValue, setHashMultiplier, setLoadFactor, shrink, size, toString, toString, toString, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface com.github.tommyettinger.ds.Arrangeable
rearrange, shuffle, sizeMethods inherited from interface java.lang.Iterable
forEach, spliteratorMethods inherited from interface com.github.tommyettinger.ds.Ordered.OfLong
getOrderType, random, random, reverse, selectRanked, selectRankedIndex, shuffle, swap
-
Field Details
-
keys
-
-
Constructor Details
-
LongObjectOrderedMap
Creates a new map with an initial capacity ofUtilities.getDefaultTableCapacity()and a load factor ofUtilities.getDefaultLoadFactor().- Parameters:
ordering- determines what implementationorder()will use
-
LongObjectOrderedMap
Creates a new map with the given starting capacity and a load factor ofUtilities.getDefaultLoadFactor().- Parameters:
initialCapacity- If not a power of two, it is increased to the next nearest power of two.ordering- determines what implementationorder()will use
-
LongObjectOrderedMap
Creates a new map with the specified initial capacity and load factor. This map will hold initialCapacity items before growing the backing table.- Parameters:
initialCapacity- If not a power of two, it is increased to the next nearest power of two.loadFactor- what fraction of the capacity can be filled before this has to resize; 0 < loadFactor <= 1ordering- determines what implementationorder()will use
-
LongObjectOrderedMap
Creates a new map identical to the specified map.- Parameters:
map- the map to copy
-
LongObjectOrderedMap
Creates a new map identical to the specified map.- Parameters:
map- the map to copyordering- determines what implementationorder()will use
-
LongObjectOrderedMap
Creates a new set by copyingcountitems from the given LongObjectOrderedMap, starting atoffsetin that Map, into this.- Parameters:
other- another LongObjectOrderedMap of the same typeoffset- the first index in other's ordering to draw an item fromcount- how many items to copy from other
-
LongObjectOrderedMap
Creates a new map identical to the specified map.- Parameters:
map- the map to copy
-
LongObjectOrderedMap
public LongObjectOrderedMap(LongObjectOrderedMap<? extends V> other, int offset, int count, OrderType ordering) Creates a new set by copyingcountitems from the given LongObjectOrderedMap, starting atoffsetin that Map, into this.- Parameters:
other- another LongObjectOrderedMap of the same typeoffset- the first index in other's ordering to draw an item fromcount- how many items to copy from otherordering- determines what implementationorder()will use
-
LongObjectOrderedMap
Given two side-by-side arrays, one of keys, one of 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 keysvalues- an array of valuesordering- determines what implementationorder()will use
-
LongObjectOrderedMap
public LongObjectOrderedMap(PrimitiveCollection.OfLong keys, Collection<? extends V> values, OrderType ordering) Given two side-by-side collections, one of keys, one of 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 PrimitiveCollection of keysvalues- a PrimitiveCollection of valuesordering- determines what implementationorder()will use
-
LongObjectOrderedMap
public LongObjectOrderedMap()Creates a new map with an initial capacity ofUtilities.getDefaultTableCapacity()and a load factor ofUtilities.getDefaultLoadFactor(). -
LongObjectOrderedMap
public LongObjectOrderedMap(int initialCapacity) Creates a new map with the given starting capacity and a load factor ofUtilities.getDefaultLoadFactor().- Parameters:
initialCapacity- If not a power of two, it is increased to the next nearest power of two.
-
LongObjectOrderedMap
public LongObjectOrderedMap(int initialCapacity, float loadFactor) Creates a new map with the specified initial capacity and load factor. This map will hold initialCapacity items before growing the backing table.- Parameters:
initialCapacity- If not a power of two, it is increased to the next nearest power of two.loadFactor- what fraction of the capacity can be filled before this has to resize; 0 < loadFactor <= 1
-
LongObjectOrderedMap
Given two side-by-side arrays, one of keys, one of 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 keysvalues- an array of values
-
LongObjectOrderedMap
Given two side-by-side collections, one of keys, one of 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 PrimitiveCollection of keysvalues- a PrimitiveCollection of values
-
-
Method Details
-
put
Description copied from class:LongObjectMapReturns the old value associated with the specified key, or this map'sLongObjectMap.defaultValueif there was no prior value.- Overrides:
putin classLongObjectMap<V>
-
put
Puts the given key and value into this map at the given index in its order. If the key is already present at a different index, it is moved to the given index and its value is set to the given value.- Parameters:
key- a long keyvalue- a V value; permitted to be nullindex- the index in the order to place the given key and value; must be non-negative and less thanLongObjectMap.size()- Returns:
- the previous value associated with key, if there was one, or null otherwise
-
putOrDefault
Description copied from class:LongObjectMapReturns the old value associated with the specified key, or the givendefaultValueif there was no prior value.- Overrides:
putOrDefaultin classLongObjectMap<V>
-
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. This will put keys in the order of the given map.- Parameters:
map- a map with compatible key and value types; will not be modified
-
putAll
Adds up tocountentries, starting fromoffset, in the mapotherto this set, inserting at the end of the iteration order.- Parameters:
other- a non-null ordered map with the same type and compatible generic typesoffset- the first index inotherto usecount- how many indices inotherto use
-
putAll
public void putAll(int insertionIndex, LongObjectOrderedMap<? extends V> other, int offset, int count) Adds up tocountentries, starting fromoffset, in the mapotherto this set, inserting starting atinsertionIndexin the iteration order.- Parameters:
insertionIndex- where to insert into the iteration orderother- a non-null ordered map with the same type and compatible generic typesoffset- the first index inotherto usecount- how many indices inotherto use
-
remove
- Overrides:
removein classLongObjectMap<V>
-
removeAt
Removes the entry at the given index in the order, returning the value of that entry.- Parameters:
index- the index of the entry to remove; must be at least 0 and less thanLongObjectMap.size()- Returns:
- the value of the removed entry
-
removeRange
public void removeRange(int start, int end) Removes the items between the specified start index, inclusive, and end index, exclusive. Note that this takes different arguments than some other range-related methods; this needs a start index and an end index, rather than a count of items. This matches the behavior in the JDK collections.- Specified by:
removeRangein interfaceOrdered.OfLong- Parameters:
start- the first index to remove, inclusiveend- the last index (after what should be removed), exclusive
-
truncate
public void truncate(int newSize) Reduces the size of the map to the specified size. If the map is already smaller than the specified size, no action is taken.- Overrides:
truncatein classLongObjectMap<V>- Parameters:
newSize- the target size to try to reach by removing items, if smaller than the current size
-
ensureCapacity
public void ensureCapacity(int additionalCapacity) Increases the size of the backing array to accommodate the specified number of additional items / loadFactor. Useful before adding many items to avoid multiple backing array resizes.- Overrides:
ensureCapacityin classLongObjectMap<V>- Parameters:
additionalCapacity- how many additional items this should be able to hold without resizing (probably)
-
alter
public boolean alter(long before, long after) Changes the keybeforetoafterwithout changing its position in the order or its value. Returns true ifafterhas been added to the LongObjectOrderedMap andbeforehas been removed; returns false ifafteris already present orbeforeis not present. If you are iterating over an LongObjectOrderedMap and have an index, you should preferalterAt(int, long), which doesn't need to search for an index like this does and so can be faster.- Parameters:
before- a key that must be present for this to succeedafter- a key that must not be in this map for this to succeed- Returns:
- true if
beforewas removed andafterwas added, false otherwise
-
alterAt
public boolean alterAt(int index, long after) Changes the key at the givenindexin the order toafter, without changing the ordering of other entries or any values. Ifafteris already present, this returns false; it will also return false ifindexis invalid for the size of this map. Otherwise, it returns true. Unlikealter(long, long), this operates in constant time.- Parameters:
index- the index in the order of the key to change; must be non-negative and less thanLongObjectMap.sizeafter- the key that will replace the contents atindex; this key must not be present for this to succeed- Returns:
- true if
aftersuccessfully replaced the key atindex, false otherwise
-
setAt
Changes the value at a specifiedindexin the iteration order tov, without changing keys at all. Ifindexisn't currently a valid index in the iteration order, this returns null. Otherwise, it returns the value that was previously held atindex, which may also be null.- Parameters:
v- the new V value to assignindex- the index in the iteration order to setvat- Returns:
- the previous value held at
indexin the iteration order, which may be null if the value was null or ifindexwas invalid
-
getAt
Gets the V value at the givenindexin the insertion order. The index should be between 0 (inclusive) andLongObjectMap.size()(exclusive).- Parameters:
index- an index in the insertion order, between 0 (inclusive) andLongObjectMap.size()(exclusive)- Returns:
- the value at the given index
-
keyAt
public long keyAt(int index) Gets the long key at the givenindexin the insertion order. The index should be between 0 (inclusive) andLongObjectMap.size()(exclusive).- Parameters:
index- an index in the insertion order, between 0 (inclusive) andLongObjectMap.size()(exclusive)- Returns:
- the key at the given index
-
clear
public void clear(int maximumCapacity) Description copied from class:LongObjectMapClears the map and reduces the size of the backing arrays to be the specified capacity / loadFactor, if they are larger.- Overrides:
clearin classLongObjectMap<V>
-
clear
public void clear()- Overrides:
clearin classLongObjectMap<V>
-
order
Gets the LongList of keys in the order this class will iterate through them. Returns a direct reference to the same LongList this uses, so changes to the returned list will also change the iteration order here.- Specified by:
orderin interfaceOrdered.OfLong- Returns:
- the LongList of keys, in iteration order (usually insertion-order), that this uses
-
sort
public void sort()Sorts this LongObjectOrderedMap in-place by the keys' natural ordering. -
sort
Sorts this LongObjectOrderedMap in-place by the given LongComparator used on the keys. Ifcompis null, then this will sort by the natural ordering of the keys.- Specified by:
sortin interfaceOrdered.OfLong- Parameters:
comp- a LongComparator, such as one fromLongComparators, or null to use the keys' natural ordering
-
sortByValue
Sorts this LongObjectOrderedMap in-place by the given Comparator used on the values.compmust be able to compareVvalues. If any null values are present in this LongObjectOrderedMap, then comp must be able to sort or otherwise handle null values. You can use passnullto do whatsort()does when given null (just sorting values in this case instead of keys) if the values implementComparable(requiring all of them to be non-null).- Parameters:
comp- a Comparator that can compareVvalues; may be null to use natural order of Comparable values
-
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
OrderedMapKeys(LongObjectOrderedMap)constructor for nested or multithreaded iteration.- Overrides:
keySetin classLongObjectMap<V>- Returns:
- a set view of the keys contained in this map
-
values
Returns a Collection for the values in the map. Remove is supported by the Collection's iterator.Note that the same Collection instance is returned each time this method is called. Use the
OrderedMapValues(LongObjectOrderedMap)constructor for nested or multithreaded iteration.- Overrides:
valuesin classLongObjectMap<V>- Returns:
- a
Collectionof V 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 the
OrderedMapEntries(LongObjectOrderedMap)constructor for nested or multithreaded iteration.- Overrides:
entrySetin classLongObjectMap<V>- Returns:
- a
SetofMap.Entrykey-value pairs
-
iterator
Reuses the iterator of the reusedLongObjectMap.Entriesproduced byentrySet(); does not permit nested iteration. Iterate overOrderedMapEntries(LongObjectOrderedMap)if you need nested or multithreaded iteration. You can remove an Entry from this LongObjectOrderedMap using this Iterator. -
appendTo
public StringBuilder appendTo(StringBuilder sb, String entrySeparator, String keyValueSeparator, boolean braces, LongAppender keyAppender, Appender<V> valueAppender) Appends to a StringBuilder from the contents of this LongObjectOrderedMap, but uses the givenLongAppenderandAppenderto convert each key and each value to a customizable representation and append them to a StringBuilder. These functions are often method references to methods in Base, such asBase.appendReadable(CharSequence, long)andBase.appendUnsigned(CharSequence, long). To use the default String representation, you can useLongAppender.DEFAULTas a keyAppender orAppender::appendas a valueAppender.- Overrides:
appendToin classLongObjectMap<V>- 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 a long, and returns the modified StringBuildervalueAppender- a function that takes a StringBuilder and a V, and returns the modified StringBuilder- Returns:
sb, with the appended keys and values of this map
-
with
Constructs an empty map given the key type as a generic type argument. 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.- Type Parameters:
V- the type of values- 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(Number, Object, Object...)when there's no "rest" of the keys or values. Like the more-argument with(), this will convert its V value to a primitive float, regardless of which Number type was used.- Type Parameters:
V- the type of value0- Parameters:
key0- the first and only key; will be converted to primitive longvalue0- the first and only value- 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(Number, Object, Object...)when there's no "rest" of the keys or values. Like the more-argument with(), this will convert its V values to primitive floats, regardless of which Number type was used.- Type Parameters:
V- the type of values- Parameters:
key0- a Number key; will be converted to primitive longvalue0- a V valuekey1- a Number key; will be converted to primitive longvalue1- a V value- Returns:
- a new map containing the given key-value pairs
-
with
public static <V> LongObjectOrderedMap<V> with(Number key0, V value0, Number key1, V value1, Number key2, V value2) Constructs a map given alternating keys and values. This is mostly useful as an optimization forwith(Number, Object, Object...)when there's no "rest" of the keys or values. Like the more-argument with(), this will convert its V values to primitive floats, regardless of which Number type was used.- Type Parameters:
V- the type of values- Parameters:
key0- a Number key; will be converted to primitive longvalue0- a V valuekey1- a Number key; will be converted to primitive longvalue1- a V valuekey2- a Number key; will be converted to primitive longvalue2- a V value- Returns:
- a new map containing the given key-value pairs
-
with
public static <V> LongObjectOrderedMap<V> with(Number key0, V value0, Number key1, V value1, Number key2, V value2, Number key3, V value3) Constructs a map given alternating keys and values. This is mostly useful as an optimization forwith(Number, Object, Object...)when there's no "rest" of the keys or values. Like the more-argument with(), this will convert its V values to primitive floats, regardless of which Number type was used.- Type Parameters:
V- the type of values- Parameters:
key0- a Number key; will be converted to primitive longvalue0- a V valuekey1- a Number key; will be converted to primitive longvalue1- a V valuekey2- a Number key; will be converted to primitive longvalue2- a V valuekey3- a Number key; will be converted to primitive longvalue3- a V value- 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 useLongObjectOrderedMap(long[], Object[]), which takes all keys and then all values. This needs all keys to have the same type, because it gets a generic type from the first key parameter. All keys must be some type of boxed Number, such asIntegerorDouble, and will be converted to primitivelongs. Any values that don't have V as their type or keys that aren'tNumbers have that entry skipped.- Type Parameters:
V- the type of values, inferred from value0- Parameters:
key0- the first key; will be converted to primitive longvalue0- the first value; will be used to determine the type of all valuesrest- a varargs or non-null array of alternating Number, V, Number, V... elements- Returns:
- a new map containing the given keys and values
-
withPrimitive
Constructs an empty map given the key type as a generic type argument. 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.- Type Parameters:
V- the type of values- 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(Number, Object, Object...)when there's no "rest" of the keys or values. Unlike with(), this takes unboxed long as its key type, and will not box it.- Type Parameters:
V- the type of value0- Parameters:
key0- a long keyvalue0- a V 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(Number, Object, Object...)when there's no "rest" of the keys or values. Unlike with(), this takes unboxed long as its key type, and will not box it.- Type Parameters:
V- the type of values- Parameters:
key0- a long keyvalue0- a V valuekey1- a long keyvalue1- a V value- Returns:
- a new map containing the given key-value pairs
-
withPrimitive
public static <V> LongObjectOrderedMap<V> withPrimitive(long key0, V value0, long key1, V value1, long key2, V value2) Constructs a map given alternating keys and values. This is mostly useful as an optimization forwith(Number, Object, Object...)when there's no "rest" of the keys or values. Unlike with(), this takes unboxed long as its key type, and will not box it.- Type Parameters:
V- the type of values- Parameters:
key0- a long keyvalue0- a V valuekey1- a long keyvalue1- a V valuekey2- a long keyvalue2- a V value- Returns:
- a new map containing the given key-value pairs
-
withPrimitive
public static <V> LongObjectOrderedMap<V> withPrimitive(long key0, V value0, long key1, V value1, long key2, V value2, long key3, V value3) Constructs a map given alternating keys and values. This is mostly useful as an optimization forwith(Number, Object, Object...)when there's no "rest" of the keys or values. Unlike with(), this takes unboxed long as its key type, and will not box it.- Type Parameters:
V- the type of values- Parameters:
key0- a long keyvalue0- a V valuekey1- a long keyvalue1- a V valuekey2- a long keyvalue2- a V valuekey3- a long keyvalue3- a V value- Returns:
- a new map containing the given key-value pairs
-
parse
public static <V> LongObjectOrderedMap<V> parse(String str, String entrySeparator, String keyValueSeparator, PartialParser<V> valueParser) Creates a new map by parsing all ofstrwith the given PartialParser for values, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".
VariousPartialParserinstances are defined as constants, such asPartialParser.DEFAULT_STRING, and others can be created by static methods in PartialParser, such asPartialParser.objectListParser(PartialParser, String, boolean).- Parameters:
str- a String containing parseable textentrySeparator- the String separating every key-value pairkeyValueSeparator- the String separating every key from its corresponding valuevalueParser- a PartialParser that returns aVvalue from a section ofstr
-
parse
public static <V> LongObjectOrderedMap<V> parse(String str, String entrySeparator, String keyValueSeparator, PartialParser<V> valueParser, 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 values, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".
VariousPartialParserinstances are defined as constants, such asPartialParser.DEFAULT_STRING, and others can be created by static methods in PartialParser, such asPartialParser.objectListParser(PartialParser, String, boolean).- Parameters:
str- a String containing parseable textentrySeparator- the String separating every key-value pairkeyValueSeparator- the String separating every key from its corresponding valuevalueParser- a PartialParser that returns aVvalue from a section ofstrbrackets- if true, the first and last chars instrwill be ignored
-
parse
public static <V> LongObjectOrderedMap<V> parse(String str, String entrySeparator, String keyValueSeparator, PartialParser<V> valueParser, int offset, int length) Creates a new map by parsing the given subrange ofstrwith the given PartialParser for values, with entries separated byentrySeparator, such as", "and the keys separated from values bykeyValueSeparator, such as"=".
VariousPartialParserinstances are defined as constants, such asPartialParser.DEFAULT_STRING, and others can be created by static methods in PartialParser, such asPartialParser.objectListParser(PartialParser, String, boolean).- Parameters:
str- a String containing parseable textentrySeparator- the String separating every key-value pairkeyValueSeparator- the String separating every key from its corresponding valuevalueParser- a PartialParser that returns aVvalue from a section ofstroffset- the first position to read parseable text from instrlength- how many chars to read; -1 is treated as maximum length
-