Class UnifiedMapWithHashingStrategy<K,V>
- java.lang.Object
-
- org.eclipse.collections.impl.AbstractRichIterable<V>
-
- org.eclipse.collections.impl.map.AbstractMapIterable<K,V>
-
- org.eclipse.collections.impl.map.mutable.AbstractMutableMapIterable<K,V>
-
- org.eclipse.collections.impl.map.mutable.AbstractMutableMap<K,V>
-
- org.eclipse.collections.impl.map.strategy.mutable.UnifiedMapWithHashingStrategy<K,V>
-
- All Implemented Interfaces:
java.io.Externalizable
,java.io.Serializable
,java.lang.Cloneable
,java.lang.Iterable<V>
,java.util.Map<K,V>
,InternalIterable<V>
,MapIterable<K,V>
,MutableMap<K,V>
,MutableMapIterable<K,V>
,UnsortedMapIterable<K,V>
,RichIterable<V>
,BatchIterable<V>
public class UnifiedMapWithHashingStrategy<K,V> extends AbstractMutableMap<K,V> implements java.io.Externalizable, BatchIterable<V>
UnifiedMapWithHashingStrategy stores key/value pairs in a single array, where alternate slots are keys and values. This is nicer to CPU caches as consecutive memory addresses are very cheap to access. Entry objects are not stored in the table like in java.util.HashMap. Instead of trying to deal with collisions in the main array using Entry objects, we put a special object in the key slot and put a regular Object[] in the value slot. The array contains the key value pairs in consecutive slots, just like the main array, but it's a linear list with no hashing.The difference between UnifiedMap and UnifiedMapWithHashingStrategy is that a HashingStrategy based UnifiedMap does not rely on the hashCode or equality of the object at the key, but instead relies on a HashingStrategy implementation provided by a developer to compute the hashCode and equals for the objects stored in the map.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
UnifiedMapWithHashingStrategy.EntrySet
protected class
UnifiedMapWithHashingStrategy.EntrySetIterator
protected class
UnifiedMapWithHashingStrategy.KeySet
protected class
UnifiedMapWithHashingStrategy.KeySetIterator
protected class
UnifiedMapWithHashingStrategy.PositionalIterator<T>
protected class
UnifiedMapWithHashingStrategy.ValuesCollection
protected class
UnifiedMapWithHashingStrategy.ValuesIterator
protected static class
UnifiedMapWithHashingStrategy.WeakBoundEntry<K,V>
-
Nested classes/interfaces inherited from class org.eclipse.collections.impl.map.mutable.AbstractMutableMap
AbstractMutableMap.ValuesCollectionCommon<V>
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.Object
CHAINED_KEY
protected static int
DEFAULT_INITIAL_CAPACITY
protected static float
DEFAULT_LOAD_FACTOR
protected HashingStrategy<? super K>
hashingStrategy
protected float
loadFactor
protected int
maxSize
protected static java.lang.Object
NULL_KEY
protected int
occupied
private static long
serialVersionUID
protected java.lang.Object[]
table
-
Constructor Summary
Constructors Constructor Description UnifiedMapWithHashingStrategy()
Deprecated.No argument default constructor used for serialization.UnifiedMapWithHashingStrategy(HashingStrategy<? super K> hashingStrategy)
UnifiedMapWithHashingStrategy(HashingStrategy<? super K> hashingStrategy, int initialCapacity)
UnifiedMapWithHashingStrategy(HashingStrategy<? super K> hashingStrategy, int initialCapacity, float loadFactor)
UnifiedMapWithHashingStrategy(HashingStrategy<? super K> hashingStrategy, java.util.Map<? extends K,? extends V> map)
UnifiedMapWithHashingStrategy(HashingStrategy<? super K> hashingStrategy, Pair<K,V>... pairs)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected int
allocate(int capacity)
protected void
allocateTable(int sizeToAllocate)
void
batchForEach(Procedure<? super V> procedure, int sectionIndex, int sectionCount)
private boolean
chainContainsKey(java.lang.Object[] chain, K key)
private boolean
chainedContainsValue(java.lang.Object[] chain, V value)
private boolean
chainedEquals(java.lang.Object[] chain, java.util.Map<?,?> other)
private void
chainedForEachEntry(java.lang.Object[] chain, Procedure2<? super K,? super V> procedure)
private void
chainedForEachKey(java.lang.Object[] chain, Procedure<? super K> procedure)
private void
chainedForEachValue(java.lang.Object[] chain, Procedure<? super V> procedure)
private <P> void
chainedForEachValueWith(java.lang.Object[] chain, Procedure2<? super V,? super P> procedure, P parameter)
private int
chainedForEachValueWithIndex(java.lang.Object[] chain, ObjectIntProcedure<? super V> objectIntProcedure, int index)
private V
chainedGetIfAbsentPut(K key, int index, Function0<? extends V> function)
private V
chainedGetIfAbsentPut(K key, int index, V value)
private <P> V
chainedGetIfAbsentPutWith(K key, int index, Function<? super P,? extends V> function, P parameter)
private int
chainedHashCode(java.lang.Object[] chain)
private V
chainedPut(K key, int index, V value)
private void
chainedPutForTrim(K key, int index, V value)
private V
chainedUpdateValue(K key, int index, Function0<? extends V> factory, Function<? super V,? extends V> function)
private <P> V
chainedUpdateValueWith(K key, int index, Function0<? extends V> factory, Function2<? super V,? super P,? extends V> function, P parameter)
void
clear()
UnifiedMapWithHashingStrategy<K,V>
clone()
<E> MutableMap<K,V>
collectKeysAndValues(java.lang.Iterable<E> iterable, Function<? super E,? extends K> keyFunction, Function<? super E,? extends V> valueFunction)
Adds all the entries derived fromiterable
tothis
.<R> MutableMap<K,R>
collectValues(Function2<? super K,? super V,? extends R> function)
For each key and value of the map the function is evaluated.protected void
computeMaxSize(int capacity)
boolean
containsKey(java.lang.Object key)
boolean
containsValue(java.lang.Object value)
private void
copyChain(java.lang.Object[] chain)
protected void
copyMap(UnifiedMapWithHashingStrategy<K,V> unifiedMap)
java.util.Set<java.util.Map.Entry<K,V>>
entrySet()
boolean
equals(java.lang.Object object)
Follows the same general contract asMap.equals(Object)
.private int
fastCeil(float v)
void
forEachKey(Procedure<? super K> procedure)
Calls theprocedure
with each key of the map.void
forEachKeyValue(Procedure2<? super K,? super V> procedure)
Calls theprocedure
with each key-value pair of the map.void
forEachValue(Procedure<? super V> procedure)
Calls the procedure with each value of the map.<P> void
forEachWith(Procedure2<? super V,? super P> procedure, P parameter)
The procedure2 is evaluated for each element in the iterable with the specified parameter provided as the second argument.void
forEachWithIndex(ObjectIntProcedure<? super V> objectIntProcedure)
Iterates over the iterable passing each element and the current relative int index to the specified instance of ObjectIntProcedure.V
get(java.lang.Object key)
int
getBatchCount(int batchSize)
int
getCollidingBuckets()
private java.util.Set<? extends java.util.Map.Entry<? extends K,? extends V>>
getEntrySetFrom(java.util.Map<? extends K,? extends V> map)
V
getFirst()
Returns the first element of an iterable.private V
getFromChain(java.lang.Object[] chain, K key)
V
getIfAbsentPut(K key, Function0<? extends V> function)
Get and return the value in the Map at the specified key.V
getIfAbsentPut(K key, V value)
Get and return the value in the Map at the specified key.<P> V
getIfAbsentPutWith(K key, Function<? super P,? extends V> function, P parameter)
Get and return the value in the Map at the specified key.int
getMapMemoryUsedInWords()
Returns the number of JVM words that is used by this map.int
hashCode()
Follows the same general contract asMap.hashCode()
.HashingStrategy<? super K>
hashingStrategy()
protected int
index(K key)
protected int
init(int initialCapacity)
boolean
isEmpty()
Returns true if this iterable has zero items.java.util.Set<K>
keySet()
MutableMap<K,V>
newEmpty()
Creates a new instance of the same type, using the default capacity and growth parameters.MutableMap<K,V>
newEmpty(int capacity)
Creates a new instance of the same type, using the given capacity and the default growth parameters.static <K,V>
UnifiedMapWithHashingStrategy<K,V>newMap(HashingStrategy<? super K> hashingStrategy)
static <K,V>
UnifiedMapWithHashingStrategy<K,V>newMap(HashingStrategy<? super K> hashingStrategy, int size)
static <K,V>
UnifiedMapWithHashingStrategy<K,V>newMap(HashingStrategy<? super K> hashingStrategy, int size, float loadFactor)
static <K,V>
UnifiedMapWithHashingStrategy<K,V>newMap(HashingStrategy<? super K> hashingStrategy, java.util.Map<? extends K,? extends V> map)
static <K,V>
UnifiedMapWithHashingStrategy<K,V>newMap(UnifiedMapWithHashingStrategy<K,V> map)
static <K,V>
UnifiedMapWithHashingStrategy<K,V>newMapWith(HashingStrategy<? super K> hashingStrategy, java.lang.Iterable<Pair<K,V>> inputIterable)
static <K,V>
UnifiedMapWithHashingStrategy<K,V>newMapWith(HashingStrategy<? super K> hashingStrategy, Pair<K,V>... pairs)
static <K,V>
UnifiedMapWithHashingStrategy<K,V>newWithKeysValues(HashingStrategy<? super K> hashingStrategy, K key, V value)
static <K,V>
UnifiedMapWithHashingStrategy<K,V>newWithKeysValues(HashingStrategy<? super K> hashingStrategy, K key1, V value1, K key2, V value2)
static <K,V>
UnifiedMapWithHashingStrategy<K,V>newWithKeysValues(HashingStrategy<? super K> hashingStrategy, K key1, V value1, K key2, V value2, K key3, V value3)
static <K,V>
UnifiedMapWithHashingStrategy<K,V>newWithKeysValues(HashingStrategy<? super K> hashingStrategy, K key1, V value1, K key2, V value2, K key3, V value3, K key4, V value4)
private boolean
nonNullTableObjectEquals(java.lang.Object cur, K key)
private K
nonSentinel(java.lang.Object key)
private static boolean
nullSafeEquals(java.lang.Object value, java.lang.Object other)
private void
overwriteWithLastElementFromChain(java.lang.Object[] chain, int index, int i)
V
put(K key, V value)
void
putAll(java.util.Map<? extends K,? extends V> map)
private void
putForTrim(K key, V value, int oldIndex, int mask)
void
readExternal(java.io.ObjectInput in)
protected void
rehash(int newCapacity)
V
remove(java.lang.Object key)
private V
removeFromChain(java.lang.Object[] chain, K key, int index)
V
removeKey(K key)
Remove an entry from the map at the specifiedkey
.int
size()
Returns the number of items in this iterable.ImmutableMap<K,V>
toImmutable()
Returns an immutable copy of this map.private static java.lang.Object
toSentinelIfNull(java.lang.Object key)
java.lang.String
toString()
Returns a string with the elements of the iterable separated by commas with spaces and enclosed in square brackets.boolean
trimToSize()
V
updateValue(K key, Function0<? extends V> factory, Function<? super V,? extends V> function)
Looks up the value associated withkey
, applies thefunction
to it, and replaces the value.<P> V
updateValueWith(K key, Function0<? extends V> factory, Function2<? super V,? super P,? extends V> function, P parameter)
Same asMutableMapIterable.updateValue(Object, Function0, Function)
with a Function2 and specified parameter which is passed to the function.java.util.Collection<V>
values()
UnifiedMapWithHashingStrategy<K,V>
withKeysValues(K key, V value)
UnifiedMapWithHashingStrategy<K,V>
withKeysValues(K key1, V value1, K key2, V value2)
UnifiedMapWithHashingStrategy<K,V>
withKeysValues(K key1, V value1, K key2, V value2, K key3, V value3)
UnifiedMapWithHashingStrategy<K,V>
withKeysValues(K key1, V value1, K key2, V value2, K key3, V value3, K key4, V value4)
void
writeExternal(java.io.ObjectOutput out)
private void
writeExternalChain(java.io.ObjectOutput out, java.lang.Object[] chain)
-
Methods inherited from class org.eclipse.collections.impl.map.mutable.AbstractMutableMap
asSynchronized, asUnmodifiable, collect, collectBoolean, collectByte, collectChar, collectDouble, collectFloat, collectIf, collectInt, collectLong, collectShort, collectWith, flatCollect, flip, groupBy, groupByEach, groupByUniqueKey, partition, partitionWith, reject, reject, rejectWith, select, select, selectInstancesOf, selectWith, tap, withAllKeyValueArguments, withAllKeyValues, withKeyValue, withoutAllKeys, withoutKey, zip, zipWithIndex
-
Methods inherited from class org.eclipse.collections.impl.map.mutable.AbstractMutableMapIterable
aggregateBy, collect, countBy, countByEach, countByWith, detect, detectOptional, flipUniqueValues, getIfAbsentPutWithKey, iterator, keysView, keyValuesView, sumByDouble, sumByFloat, sumByInt, sumByLong, valuesView
-
Methods inherited from class org.eclipse.collections.impl.map.AbstractMapIterable
allSatisfy, allSatisfyWith, anySatisfy, anySatisfyWith, asLazy, chunk, contains, detect, detectIfNone, detectOptional, detectWith, detectWithIfNone, detectWithOptional, each, getIfAbsent, getIfAbsentValue, getIfAbsentWith, getLast, getOnly, getOrDefault, ifPresentApply, isAbsent, keyAndValueEquals, keyAndValueHashCode, noneSatisfy, noneSatisfyWith, toArray, toArray
-
Methods inherited from class org.eclipse.collections.impl.AbstractRichIterable
appendString, appendString, collect, collectIf, collectWith, containsAll, containsAllArguments, containsAllIterable, count, countWith, flatCollect, forEach, groupBy, groupByEach, groupByUniqueKey, injectInto, injectInto, injectInto, injectInto, injectInto, into, max, max, maxBy, min, min, minBy, reject, rejectWith, select, selectWith, sumOfDouble, sumOfFloat, sumOfInt, sumOfLong, toBag, toBiMap, toList, toMap, toSet, toSortedBag, toSortedBag, toSortedBagBy, toSortedListBy, toSortedMap, toSortedMap, toSortedMapBy, toSortedSet, toSortedSet, toSortedSetBy, zip, zipWithIndex
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.collections.impl.parallel.BatchIterable
forEach
-
Methods inherited from interface org.eclipse.collections.api.InternalIterable
forEach
-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Methods inherited from interface org.eclipse.collections.api.map.MapIterable
detect, detectOptional, getIfAbsent, getIfAbsentValue, getIfAbsentWith, ifPresentApply, injectIntoKeyValue, keysView, keyValuesView, parallelStream, spliterator, stream, valuesView
-
Methods inherited from interface org.eclipse.collections.api.map.MutableMap
aggregateBy, aggregateBy, aggregateInPlaceBy, collect, flatCollectWith, flipUniqueValues, withMap, withMapIterable
-
Methods inherited from interface org.eclipse.collections.api.map.MutableMapIterable
add, countBy, countByEach, countByWith, getIfAbsentPutWithKey, getOrDefault, putAllMapIterable, putPair, removeAllKeys, removeIf, sumByDouble, sumByFloat, sumByInt, sumByLong
-
Methods inherited from interface org.eclipse.collections.api.RichIterable
aggregateBy, allSatisfy, allSatisfyWith, anySatisfy, anySatisfyWith, appendString, appendString, appendString, asLazy, chunk, collect, collectBoolean, collectByte, collectChar, collectDouble, collectFloat, collectIf, collectInt, collectLong, collectShort, collectWith, contains, containsAll, containsAllArguments, containsAllIterable, containsAny, containsAnyIterable, containsBy, containsNone, containsNoneIterable, count, countBy, countByEach, countByWith, countWith, detect, detectIfNone, detectOptional, detectWith, detectWithIfNone, detectWithOptional, each, flatCollect, flatCollectBoolean, flatCollectByte, flatCollectChar, flatCollectDouble, flatCollectFloat, flatCollectInt, flatCollectLong, flatCollectShort, flatCollectWith, forEach, getAny, getLast, getOnly, groupBy, groupByAndCollect, groupByEach, groupByUniqueKey, injectInto, injectInto, injectInto, injectInto, injectInto, injectIntoDouble, injectIntoFloat, injectIntoInt, injectIntoLong, into, makeString, makeString, makeString, makeString, max, max, maxBy, maxByOptional, maxOptional, maxOptional, min, min, minBy, minByOptional, minOptional, minOptional, noneSatisfy, noneSatisfyWith, notEmpty, reduce, reduceInPlace, reduceInPlace, reject, rejectWith, select, selectWith, summarizeDouble, summarizeFloat, summarizeInt, summarizeLong, sumOfDouble, sumOfFloat, sumOfInt, sumOfLong, toArray, toArray, toBag, toBiMap, toImmutableBag, toImmutableBiMap, toImmutableList, toImmutableMap, toImmutableSet, toImmutableSortedBag, toImmutableSortedBag, toImmutableSortedBagBy, toImmutableSortedList, toImmutableSortedList, toImmutableSortedListBy, toImmutableSortedSet, toImmutableSortedSet, toImmutableSortedSetBy, toList, toMap, toMap, toSet, toSortedBag, toSortedBag, toSortedBagBy, toSortedList, toSortedList, toSortedListBy, toSortedMap, toSortedMap, toSortedMapBy, toSortedSet, toSortedSet, toSortedSetBy, zip, zipWithIndex
-
-
-
-
Field Detail
-
NULL_KEY
protected static final java.lang.Object NULL_KEY
-
CHAINED_KEY
protected static final java.lang.Object CHAINED_KEY
-
DEFAULT_LOAD_FACTOR
protected static final float DEFAULT_LOAD_FACTOR
- See Also:
- Constant Field Values
-
DEFAULT_INITIAL_CAPACITY
protected static final int DEFAULT_INITIAL_CAPACITY
- See Also:
- Constant Field Values
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
table
protected transient java.lang.Object[] table
-
occupied
protected transient int occupied
-
loadFactor
protected float loadFactor
-
maxSize
protected int maxSize
-
hashingStrategy
protected HashingStrategy<? super K> hashingStrategy
-
-
Constructor Detail
-
UnifiedMapWithHashingStrategy
@Deprecated public UnifiedMapWithHashingStrategy()
Deprecated.No argument default constructor used for serialization. Instantiating an UnifiedMapWithHashingStrategyMultimap with this constructor will have a null hashingStrategy and throw NullPointerException when used.
-
UnifiedMapWithHashingStrategy
public UnifiedMapWithHashingStrategy(HashingStrategy<? super K> hashingStrategy)
-
UnifiedMapWithHashingStrategy
public UnifiedMapWithHashingStrategy(HashingStrategy<? super K> hashingStrategy, int initialCapacity)
-
UnifiedMapWithHashingStrategy
public UnifiedMapWithHashingStrategy(HashingStrategy<? super K> hashingStrategy, int initialCapacity, float loadFactor)
-
UnifiedMapWithHashingStrategy
public UnifiedMapWithHashingStrategy(HashingStrategy<? super K> hashingStrategy, java.util.Map<? extends K,? extends V> map)
-
UnifiedMapWithHashingStrategy
public UnifiedMapWithHashingStrategy(HashingStrategy<? super K> hashingStrategy, Pair<K,V>... pairs)
-
-
Method Detail
-
newMap
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newMap(HashingStrategy<? super K> hashingStrategy)
-
newMap
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newMap(HashingStrategy<? super K> hashingStrategy, int size)
-
newMap
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newMap(HashingStrategy<? super K> hashingStrategy, int size, float loadFactor)
-
newMap
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newMap(HashingStrategy<? super K> hashingStrategy, java.util.Map<? extends K,? extends V> map)
-
newMapWith
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newMapWith(HashingStrategy<? super K> hashingStrategy, java.lang.Iterable<Pair<K,V>> inputIterable)
-
newMap
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newMap(UnifiedMapWithHashingStrategy<K,V> map)
-
newMapWith
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newMapWith(HashingStrategy<? super K> hashingStrategy, Pair<K,V>... pairs)
-
newWithKeysValues
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newWithKeysValues(HashingStrategy<? super K> hashingStrategy, K key, V value)
-
newWithKeysValues
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newWithKeysValues(HashingStrategy<? super K> hashingStrategy, K key1, V value1, K key2, V value2)
-
newWithKeysValues
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newWithKeysValues(HashingStrategy<? super K> hashingStrategy, K key1, V value1, K key2, V value2, K key3, V value3)
-
newWithKeysValues
public static <K,V> UnifiedMapWithHashingStrategy<K,V> newWithKeysValues(HashingStrategy<? super K> hashingStrategy, K key1, V value1, K key2, V value2, K key3, V value3, K key4, V value4)
-
withKeysValues
public UnifiedMapWithHashingStrategy<K,V> withKeysValues(K key, V value)
-
withKeysValues
public UnifiedMapWithHashingStrategy<K,V> withKeysValues(K key1, V value1, K key2, V value2)
-
withKeysValues
public UnifiedMapWithHashingStrategy<K,V> withKeysValues(K key1, V value1, K key2, V value2, K key3, V value3)
-
withKeysValues
public UnifiedMapWithHashingStrategy<K,V> withKeysValues(K key1, V value1, K key2, V value2, K key3, V value3, K key4, V value4)
-
hashingStrategy
public HashingStrategy<? super K> hashingStrategy()
-
clone
public UnifiedMapWithHashingStrategy<K,V> clone()
- Specified by:
clone
in interfaceMutableMap<K,V>
- Specified by:
clone
in classAbstractMutableMap<K,V>
-
newEmpty
public MutableMap<K,V> newEmpty()
Description copied from interface:MutableMapIterable
Creates a new instance of the same type, using the default capacity and growth parameters.- Specified by:
newEmpty
in interfaceMutableMap<K,V>
- Specified by:
newEmpty
in interfaceMutableMapIterable<K,V>
-
newEmpty
public MutableMap<K,V> newEmpty(int capacity)
Description copied from class:AbstractMutableMap
Creates a new instance of the same type, using the given capacity and the default growth parameters.- Specified by:
newEmpty
in classAbstractMutableMap<K,V>
-
fastCeil
private int fastCeil(float v)
-
init
protected int init(int initialCapacity)
-
allocate
protected int allocate(int capacity)
-
allocateTable
protected void allocateTable(int sizeToAllocate)
-
computeMaxSize
protected void computeMaxSize(int capacity)
-
index
protected int index(K key)
-
updateValue
public V updateValue(K key, Function0<? extends V> factory, Function<? super V,? extends V> function)
Description copied from interface:MutableMapIterable
Looks up the value associated withkey
, applies thefunction
to it, and replaces the value. If there is no value associated withkey
, starts it off with a value supplied byfactory
.- Specified by:
updateValue
in interfaceMutableMapIterable<K,V>
- Overrides:
updateValue
in classAbstractMutableMapIterable<K,V>
-
chainedUpdateValue
private V chainedUpdateValue(K key, int index, Function0<? extends V> factory, Function<? super V,? extends V> function)
-
updateValueWith
public <P> V updateValueWith(K key, Function0<? extends V> factory, Function2<? super V,? super P,? extends V> function, P parameter)
Description copied from interface:MutableMapIterable
Same asMutableMapIterable.updateValue(Object, Function0, Function)
with a Function2 and specified parameter which is passed to the function.- Specified by:
updateValueWith
in interfaceMutableMapIterable<K,V>
- Overrides:
updateValueWith
in classAbstractMutableMapIterable<K,V>
-
chainedUpdateValueWith
private <P> V chainedUpdateValueWith(K key, int index, Function0<? extends V> factory, Function2<? super V,? super P,? extends V> function, P parameter)
-
getIfAbsentPut
public V getIfAbsentPut(K key, Function0<? extends V> function)
Description copied from interface:MutableMapIterable
Get and return the value in the Map at the specified key. Alternatively, if there is no value in the map at the key, return the result of evaluating the specified Function0, and put that value in the map at the specified key.- Specified by:
getIfAbsentPut
in interfaceMutableMapIterable<K,V>
- Overrides:
getIfAbsentPut
in classAbstractMutableMapIterable<K,V>
-
chainedGetIfAbsentPut
private V chainedGetIfAbsentPut(K key, int index, Function0<? extends V> function)
-
getIfAbsentPut
public V getIfAbsentPut(K key, V value)
Description copied from interface:MutableMapIterable
Get and return the value in the Map at the specified key. Alternatively, if there is no value in the map at the key, return the specified value, and put that value in the map at the specified key.- Specified by:
getIfAbsentPut
in interfaceMutableMapIterable<K,V>
- Overrides:
getIfAbsentPut
in classAbstractMutableMapIterable<K,V>
-
getIfAbsentPutWith
public <P> V getIfAbsentPutWith(K key, Function<? super P,? extends V> function, P parameter)
Description copied from interface:MutableMapIterable
Get and return the value in the Map at the specified key. Alternatively, if there is no value in the map for that key return the result of evaluating the specified Function using the specified parameter, and put that value in the map at the specified key.- Specified by:
getIfAbsentPutWith
in interfaceMutableMapIterable<K,V>
- Overrides:
getIfAbsentPutWith
in classAbstractMutableMapIterable<K,V>
-
chainedGetIfAbsentPutWith
private <P> V chainedGetIfAbsentPutWith(K key, int index, Function<? super P,? extends V> function, P parameter)
-
getCollidingBuckets
public int getCollidingBuckets()
-
getMapMemoryUsedInWords
public int getMapMemoryUsedInWords()
Returns the number of JVM words that is used by this map. A word is 4 bytes in a 32bit VM and 8 bytes in a 64bit VM. Each array has a 2 word header, thus the formula is: words = (internal table length + 2) + sum (for all chains (chain length + 2))- Returns:
- the number of JVM words that is used by this map.
-
rehash
protected void rehash(int newCapacity)
-
get
public V get(java.lang.Object key)
-
containsKey
public boolean containsKey(java.lang.Object key)
- Specified by:
containsKey
in interfacejava.util.Map<K,V>
- Specified by:
containsKey
in interfaceMapIterable<K,V>
- See Also:
Map.containsKey(Object)
-
chainContainsKey
private boolean chainContainsKey(java.lang.Object[] chain, K key)
-
containsValue
public boolean containsValue(java.lang.Object value)
- Specified by:
containsValue
in interfacejava.util.Map<K,V>
- Specified by:
containsValue
in interfaceMapIterable<K,V>
- See Also:
Map.containsValue(Object)
-
chainedContainsValue
private boolean chainedContainsValue(java.lang.Object[] chain, V value)
-
forEachKeyValue
public void forEachKeyValue(Procedure2<? super K,? super V> procedure)
Description copied from interface:MapIterable
Calls theprocedure
with each key-value pair of the map.final Collection<String> collection = new ArrayList<String>(); MutableMap<Integer, String> map = this.newMapWithKeysValues(1, "One", 2, "Two", 3, "Three"); map.forEachKeyValue((Integer key, String value) -> collection.add(String.valueOf(key) + value)); Verify.assertContainsAll(collection, "1One", "2Two", "3Three");
- Specified by:
forEachKeyValue
in interfaceMapIterable<K,V>
-
getFirst
public V getFirst()
Description copied from interface:RichIterable
Returns the first element of an iterable. In the case of a List it is the element at the first index. In the case of any other Collection, it is the first element that would be returned during an iteration. If the iterable is empty, null is returned. If null is a valid element of the container, then a developer would need to check to see if the iterable is empty to validate that a null result was not due to the container being empty.The order of Sets are not guaranteed (except for TreeSets and other Ordered Set implementations), so if you use this method, the first element could be any element from the Set.
- Specified by:
getFirst
in interfaceRichIterable<K>
- Overrides:
getFirst
in classAbstractMapIterable<K,V>
-
collectKeysAndValues
public <E> MutableMap<K,V> collectKeysAndValues(java.lang.Iterable<E> iterable, Function<? super E,? extends K> keyFunction, Function<? super E,? extends V> valueFunction)
Description copied from interface:MutableMap
Adds all the entries derived fromiterable
tothis
. The key and value for each entry is determined by applying thekeyFunction
andvalueFunction
to each item incollection
. Any entry inmap
that has the same key as an entry inthis
will have its value replaced by that inmap
.- Specified by:
collectKeysAndValues
in interfaceMutableMap<K,V>
-
removeKey
public V removeKey(K key)
Description copied from interface:MutableMapIterable
Remove an entry from the map at the specifiedkey
.- Specified by:
removeKey
in interfaceMutableMapIterable<K,V>
- Returns:
- The value removed from entry at key, or null if not found.
- See Also:
Map.remove(Object)
-
chainedForEachEntry
private void chainedForEachEntry(java.lang.Object[] chain, Procedure2<? super K,? super V> procedure)
-
getBatchCount
public int getBatchCount(int batchSize)
- Specified by:
getBatchCount
in interfaceBatchIterable<K>
-
batchForEach
public void batchForEach(Procedure<? super V> procedure, int sectionIndex, int sectionCount)
- Specified by:
batchForEach
in interfaceBatchIterable<K>
-
forEachKey
public void forEachKey(Procedure<? super K> procedure)
Description copied from interface:MapIterable
Calls theprocedure
with each key of the map.final Collection<Integer> result = new ArrayList<Integer>(); MutableMap<Integer, String> map = this.newMapWithKeysValues(1, "1", 2, "2", 3, "3"); map.forEachKey(new CollectionAddProcedure<Integer>(result)); Verify.assertContainsAll(result, 1, 2, 3);
- Specified by:
forEachKey
in interfaceMapIterable<K,V>
- Overrides:
forEachKey
in classAbstractMapIterable<K,V>
-
chainedForEachKey
private void chainedForEachKey(java.lang.Object[] chain, Procedure<? super K> procedure)
-
forEachValue
public void forEachValue(Procedure<? super V> procedure)
Description copied from interface:MapIterable
Calls the procedure with each value of the map.Set<String> result = UnifiedSet.newSet(); MutableMap<Integer, String> map = this.newMapWithKeysValues(1, "One", 2, "Two", 3, "Three", 4, "Four"); map.forEachValue(new CollectionAddProcedure<String>(result)); Verify.assertSetsEqual(UnifiedSet.newSetWith("One", "Two", "Three", "Four"), result);
- Specified by:
forEachValue
in interfaceMapIterable<K,V>
- Overrides:
forEachValue
in classAbstractMapIterable<K,V>
-
chainedForEachValue
private void chainedForEachValue(java.lang.Object[] chain, Procedure<? super V> procedure)
-
isEmpty
public boolean isEmpty()
Description copied from interface:RichIterable
Returns true if this iterable has zero items.- Specified by:
isEmpty
in interfacejava.util.Map<K,V>
- Specified by:
isEmpty
in interfaceRichIterable<K>
- Overrides:
isEmpty
in classAbstractRichIterable<V>
-
getEntrySetFrom
private java.util.Set<? extends java.util.Map.Entry<? extends K,? extends V>> getEntrySetFrom(java.util.Map<? extends K,? extends V> map)
-
copyMap
protected void copyMap(UnifiedMapWithHashingStrategy<K,V> unifiedMap)
-
copyChain
private void copyChain(java.lang.Object[] chain)
-
overwriteWithLastElementFromChain
private void overwriteWithLastElementFromChain(java.lang.Object[] chain, int index, int i)
-
size
public int size()
Description copied from interface:RichIterable
Returns the number of items in this iterable.- Specified by:
size
in interfaceBatchIterable<K>
- Specified by:
size
in interfacejava.util.Map<K,V>
- Specified by:
size
in interfaceRichIterable<K>
-
values
public java.util.Collection<V> values()
-
equals
public boolean equals(java.lang.Object object)
Description copied from interface:MapIterable
Follows the same general contract asMap.equals(Object)
.
-
chainedEquals
private boolean chainedEquals(java.lang.Object[] chain, java.util.Map<?,?> other)
-
hashCode
public int hashCode()
Description copied from interface:MapIterable
Follows the same general contract asMap.hashCode()
.
-
chainedHashCode
private int chainedHashCode(java.lang.Object[] chain)
-
toString
public java.lang.String toString()
Description copied from class:AbstractRichIterable
Returns a string with the elements of the iterable separated by commas with spaces and enclosed in square brackets.Assert.assertEquals("[]", Lists.mutable.empty().toString()); Assert.assertEquals("[1]", Lists.mutable.with(1).toString()); Assert.assertEquals("[1, 2, 3]", Lists.mutable.with(1, 2, 3).toString());
- Specified by:
toString
in interfaceMapIterable<K,V>
- Specified by:
toString
in interfaceRichIterable<K>
- Overrides:
toString
in classAbstractRichIterable<V>
- Returns:
- a string representation of this collection.
- See Also:
AbstractCollection.toString()
-
trimToSize
public boolean trimToSize()
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
- Specified by:
readExternal
in interfacejava.io.Externalizable
- Throws:
java.io.IOException
java.lang.ClassNotFoundException
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
- Specified by:
writeExternal
in interfacejava.io.Externalizable
- Throws:
java.io.IOException
-
writeExternalChain
private void writeExternalChain(java.io.ObjectOutput out, java.lang.Object[] chain) throws java.io.IOException
- Throws:
java.io.IOException
-
forEachWithIndex
public void forEachWithIndex(ObjectIntProcedure<? super V> objectIntProcedure)
Description copied from interface:InternalIterable
Iterates over the iterable passing each element and the current relative int index to the specified instance of ObjectIntProcedure.Example using a Java 8 lambda:
people.forEachWithIndex((Person person, int index) -> LOGGER.info("Index: " + index + " person: " + person.getName()));
Example using an anonymous inner class:
people.forEachWithIndex(new ObjectIntProcedure<Person>() { public void value(Person person, int index) { LOGGER.info("Index: " + index + " person: " + person.getName()); } });
- Specified by:
forEachWithIndex
in interfaceInternalIterable<K>
- Overrides:
forEachWithIndex
in classAbstractMapIterable<K,V>
-
chainedForEachValueWithIndex
private int chainedForEachValueWithIndex(java.lang.Object[] chain, ObjectIntProcedure<? super V> objectIntProcedure, int index)
-
forEachWith
public <P> void forEachWith(Procedure2<? super V,? super P> procedure, P parameter)
Description copied from interface:InternalIterable
The procedure2 is evaluated for each element in the iterable with the specified parameter provided as the second argument.Example using a Java 8 lambda:
people.forEachWith((Person person, Person other) -> { if (person.isRelatedTo(other)) { LOGGER.info(person.getName()); } }, fred);
Example using an anonymous inner class:
people.forEachWith(new Procedure2<Person, Person>() { public void value(Person person, Person other) { if (person.isRelatedTo(other)) { LOGGER.info(person.getName()); } } }, fred);
- Specified by:
forEachWith
in interfaceInternalIterable<K>
- Overrides:
forEachWith
in classAbstractMapIterable<K,V>
-
chainedForEachValueWith
private <P> void chainedForEachValueWith(java.lang.Object[] chain, Procedure2<? super V,? super P> procedure, P parameter)
-
collectValues
public <R> MutableMap<K,R> collectValues(Function2<? super K,? super V,? extends R> function)
Description copied from interface:MapIterable
For each key and value of the map the function is evaluated. The results of these evaluations are returned in a new map. The map returned will use the values projected from the function rather than the original values.MapIterable<City, String> collected = peopleByCity.collectValues((City city, Person person) -> person.getFirstName() + " " + person.getLastName());
- Specified by:
collectValues
in interfaceMapIterable<K,V>
- Specified by:
collectValues
in interfaceMutableMap<K,V>
- Specified by:
collectValues
in interfaceMutableMapIterable<K,V>
- Specified by:
collectValues
in interfaceUnsortedMapIterable<K,V>
- Overrides:
collectValues
in classAbstractMutableMap<K,V>
-
nullSafeEquals
private static boolean nullSafeEquals(java.lang.Object value, java.lang.Object other)
-
nonSentinel
private K nonSentinel(java.lang.Object key)
-
toSentinelIfNull
private static java.lang.Object toSentinelIfNull(java.lang.Object key)
-
nonNullTableObjectEquals
private boolean nonNullTableObjectEquals(java.lang.Object cur, K key)
-
toImmutable
public ImmutableMap<K,V> toImmutable()
Description copied from interface:MutableMapIterable
Returns an immutable copy of this map. If the map is immutable, it returns itself.- Specified by:
toImmutable
in interfaceMapIterable<K,V>
- Specified by:
toImmutable
in interfaceMutableMapIterable<K,V>
- Specified by:
toImmutable
in interfaceUnsortedMapIterable<K,V>
- Overrides:
toImmutable
in classAbstractMutableMap<K,V>
-
-