public class ConcurrentHashMapUnsafe<K,V> extends AbstractMutableMap<K,V> implements ConcurrentMutableMap<K,V>, Externalizable
Constructor and Description |
---|
ConcurrentHashMapUnsafe() |
ConcurrentHashMapUnsafe(int initialCapacity) |
Modifier and Type | Method and Description |
---|---|
void |
clear() |
MutableMap<K,V> |
clone() |
<E> MutableMap<K,V> |
collectKeysAndValues(Iterable<E> iterable,
Function<? super E,? extends K> keyFunction,
Function<? super E,? extends V> valueFunction)
Adds all the entries derived from
iterable to this . |
boolean |
containsKey(Object key) |
boolean |
containsValue(Object value) |
int |
countEntries() |
Set<Map.Entry<K,V>> |
entrySet() |
boolean |
equals(Object o)
Follows the same general contract as
Map.equals(Object) . |
void |
forEachKey(Procedure<? super K> procedure)
Calls the
procedure with each key of the map. |
void |
forEachKeyValue(Procedure2<? super K,? super V> procedure)
Calls the
procedure 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(Object key) |
V |
getIfAbsent(K key,
Function0<? extends V> function)
Return the value in the Map that corresponds to the specified key, or if there is no value at the key, return the
result of evaluating the specified Function0.
|
V |
getIfAbsentPut(K key,
Function<? super K,? extends V> factory) |
V |
getIfAbsentPut(K key,
Function0<? extends V> factory)
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.
|
<P> V |
getIfAbsentWith(K key,
Function<? super P,? extends V> function,
P parameter)
Return the value in the Map that corresponds to the specified key, or if there is no value at the key, return the
result of evaluating the specified function and parameter.
|
int |
hashCode()
Follows the same general contract as
Map.hashCode() . |
<A> A |
ifPresentApply(K key,
Function<? super V,? extends A> function)
If there is a value in the Map that corresponds to the specified key return the result of applying the specified
Function on the value, otherwise return null.
|
boolean |
isEmpty()
Returns true if this iterable has zero items.
|
Iterator<V> |
iterator() |
Set<K> |
keySet() |
MutableMap<K,V> |
newEmpty()
Creates a new instance of the same type, using the default capacity and growth parameters.
|
<K,V> 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> ConcurrentHashMapUnsafe<K,V> |
newMap() |
static <K,V> ConcurrentHashMapUnsafe<K,V> |
newMap(int newSize) |
static <NK,NV> ConcurrentHashMapUnsafe<NK,NV> |
newMap(Map<NK,NV> map) |
boolean |
notEmpty()
The English equivalent of !this.isEmpty()
|
void |
parallelForEachKeyValue(List<Procedure2<K,V>> blocks,
Executor executor) |
void |
parallelForEachValue(List<Procedure<V>> blocks,
Executor executor) |
V |
put(K key,
V value) |
void |
putAll(Map<? extends K,? extends V> map) |
void |
putAllInParallel(Map<K,V> map,
int chunks,
Executor executor) |
V |
putIfAbsent(K key,
V value) |
<P1,P2> V |
putIfAbsentGetIfPresent(K key,
Function2<K,V,K> keyTransformer,
Function3<P1,P2,K,V> factory,
P1 param1,
P2 param2)
It puts an object into the map based on the key.
|
void |
readExternal(ObjectInput in) |
V |
remove(Object key) |
boolean |
remove(Object key,
Object value) |
V |
removeKey(K key)
Remove an entry from the map at the specified
key . |
V |
replace(K key,
V value) |
boolean |
replace(K key,
V oldValue,
V newValue) |
int |
size()
Returns the number of items in this iterable.
|
ImmutableMap<K,V> |
toImmutable()
Returns an immutable copy of this map.
|
String |
toString()
Returns a string representation of this collection.
|
V |
updateValue(K key,
Function0<? extends V> factory,
Function<? super V,? extends V> function)
Looks up the value associated with
key , applies the function 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 as
MutableMapIterable.updateValue(Object, Function0, Function) with a Function2 and specified parameter which is
passed to the function. |
Collection<V> |
values() |
ConcurrentHashMapUnsafe<K,V> |
withAllKeyValueArguments(Pair<? extends K,? extends V>... keyValues)
Convenience var-args version of withAllKeyValues
|
ConcurrentHashMapUnsafe<K,V> |
withAllKeyValues(Iterable<? extends Pair<? extends K,? extends V>> keyValues)
This method allows mutable, fixed size, and immutable maps the ability to add elements to their existing
elements.
|
ConcurrentHashMapUnsafe<K,V> |
withKeyValue(K key,
V value)
This method allows mutable, fixed size, and immutable maps the ability to add elements to their existing
elements.
|
ConcurrentHashMapUnsafe<K,V> |
withoutAllKeys(Iterable<? extends K> keys)
This method allows mutable, fixed size, and immutable maps the ability to remove elements from their existing
elements.
|
ConcurrentHashMapUnsafe<K,V> |
withoutKey(K key)
This method allows mutable, fixed size, and immutable maps the ability to remove elements from their existing
elements.
|
void |
writeExternal(ObjectOutput out) |
asSynchronized, asUnmodifiable, collect, collectBoolean, collectByte, collectChar, collectDouble, collectFloat, collectIf, collectInt, collectLong, collectShort, collectValues, collectWith, flatCollect, flip, groupBy, groupByEach, partition, partitionWith, reject, reject, rejectWith, select, select, selectInstancesOf, selectWith, tap, zip, zipWithIndex
add, aggregateBy, aggregateInPlaceBy, collect, detect, flipUniqueValues, getIfAbsentPutWithKey, groupByUniqueKey, keysView, keyValuesView, valuesView
allSatisfy, allSatisfyWith, anySatisfy, anySatisfyWith, asLazy, chunk, contains, detect, detectIfNone, detectWith, detectWithIfNone, each, getFirst, getIfAbsentValue, getLast, noneSatisfy, noneSatisfyWith, toArray, toArray
appendString, appendString, appendString, collect, collectBoolean, collectByte, collectChar, collectDouble, collectFloat, collectIf, collectInt, collectLong, collectShort, collectWith, containsAll, containsAllArguments, containsAllIterable, count, countWith, flatCollect, forEach, groupBy, groupByEach, groupByUniqueKey, injectInto, injectInto, injectInto, injectInto, injectInto, makeString, makeString, makeString, max, max, maxBy, min, min, minBy, reject, rejectWith, select, selectWith, sumByDouble, sumByFloat, sumByInt, sumByLong, sumOfDouble, sumOfFloat, sumOfInt, sumOfLong, toBag, toList, toMap, toSet, toSortedBag, toSortedBag, toSortedBagBy, toSortedList, toSortedList, toSortedListBy, toSortedMap, toSortedMap, toSortedSet, toSortedSet, toSortedSetBy, zip, zipWithIndex
aggregateBy, aggregateInPlaceBy, asSynchronized, asUnmodifiable, collect, collect, collectBoolean, collectByte, collectChar, collectDouble, collectFloat, collectIf, collectInt, collectLong, collectShort, collectValues, collectWith, flatCollect, flip, flipUniqueValues, groupBy, groupByEach, groupByUniqueKey, partition, partitionWith, reject, reject, rejectWith, select, select, selectInstancesOf, selectWith, tap, zip, zipWithIndex
add, getIfAbsentPutWithKey
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, replaceAll
detect, getIfAbsentValue, keysView, keyValuesView, valuesView
allSatisfy, allSatisfyWith, anySatisfy, anySatisfyWith, appendString, appendString, appendString, asLazy, chunk, collect, collectBoolean, collectByte, collectChar, collectDouble, collectFloat, collectIf, collectInt, collectLong, collectShort, collectWith, contains, containsAll, containsAllArguments, containsAllIterable, count, countWith, detect, detectIfNone, detectWith, detectWithIfNone, each, flatCollect, getFirst, getLast, groupBy, groupByEach, groupByUniqueKey, injectInto, injectInto, injectInto, injectInto, injectInto, makeString, makeString, makeString, max, max, maxBy, min, min, minBy, noneSatisfy, noneSatisfyWith, reject, rejectWith, select, selectWith, sumByDouble, sumByFloat, sumByInt, sumByLong, sumOfDouble, sumOfFloat, sumOfInt, sumOfLong, toArray, toArray, toBag, toList, toMap, toSet, toSortedBag, toSortedBag, toSortedBagBy, toSortedList, toSortedList, toSortedListBy, toSortedMap, toSortedMap, toSortedSet, toSortedSet, toSortedSetBy, zip, zipWithIndex
forEach
forEach, spliterator
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, replaceAll
public ConcurrentHashMapUnsafe()
public ConcurrentHashMapUnsafe(int initialCapacity)
public static <K,V> ConcurrentHashMapUnsafe<K,V> newMap()
public static <K,V> ConcurrentHashMapUnsafe<K,V> newMap(int newSize)
public V putIfAbsent(K key, V value)
putIfAbsent
in interface ConcurrentMap<K,V>
putIfAbsent
in interface Map<K,V>
public int countEntries()
public V getIfAbsentPut(K key, Function0<? extends V> factory)
MutableMapIterable
getIfAbsentPut
in interface MutableMapIterable<K,V>
getIfAbsentPut
in class AbstractMutableMapIterable<K,V>
public V getIfAbsentPut(K key, V value)
MutableMapIterable
getIfAbsentPut
in interface MutableMapIterable<K,V>
getIfAbsentPut
in class AbstractMutableMapIterable<K,V>
public <P1,P2> V putIfAbsentGetIfPresent(K key, Function2<K,V,K> keyTransformer, Function3<P1,P2,K,V> factory, P1 param1, P2 param2)
key
- The "mutable" key, which has the same identity/hashcode as the inserted key, only during this callkeyTransformer
- If the record is absent, the transformer will transform the "mutable" key into an immutable copy of the key.
Note that the transformed key must have the same identity/hashcode as the original "mutable" key.factory
- It creates an object, if it is not present in the map already.public int size()
RichIterable
public boolean isEmpty()
RichIterable
isEmpty
in interface Map<K,V>
isEmpty
in interface RichIterable<V>
isEmpty
in class AbstractRichIterable<V>
public boolean containsKey(Object key)
containsKey
in interface Map<K,V>
containsKey
in interface MapIterable<K,V>
Map.containsKey(Object)
public boolean containsValue(Object value)
containsValue
in interface Map<K,V>
containsValue
in interface MapIterable<K,V>
Map.containsValue(Object)
public V get(Object key)
get
in interface Map<K,V>
get
in interface MapIterable<K,V>
Map.get(Object)
public void parallelForEachKeyValue(List<Procedure2<K,V>> blocks, Executor executor)
public int hashCode()
MapIterable
Map.hashCode()
.public boolean equals(Object o)
MapIterable
Map.equals(Object)
.public String toString()
AbstractRichIterable
This implementation creates an empty string buffer, appends a left square bracket, and iterates over the collection appending the string representation of each element in turn. After appending each element except the last, the string ", " is appended. Finally a right bracket is appended. A string is obtained from the string buffer, and returned.
toString
in interface MapIterable<K,V>
toString
in interface RichIterable<V>
toString
in class AbstractRichIterable<V>
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
readExternal
in interface Externalizable
IOException
ClassNotFoundException
public void writeExternal(ObjectOutput out) throws IOException
writeExternal
in interface Externalizable
IOException
public static <NK,NV> ConcurrentHashMapUnsafe<NK,NV> newMap(Map<NK,NV> map)
public ConcurrentHashMapUnsafe<K,V> withKeyValue(K key, V value)
MutableMapIterable
map = map.withKeyValue("new key", "new value");In the case of FixedSizeMap, a new instance will be returned by withKeyValue, and any variables that previously referenced the original map will need to be redirected to reference the new instance. In the case of a FastMap or UnifiedMap, you will be replacing the reference to map with map, since FastMap and UnifiedMap will both return "this" after calling put on themselves.
withKeyValue
in interface MutableMap<K,V>
withKeyValue
in interface MutableMapIterable<K,V>
withKeyValue
in class AbstractMutableMap<K,V>
Map.put(Object, Object)
public ConcurrentHashMapUnsafe<K,V> withAllKeyValues(Iterable<? extends Pair<? extends K,? extends V>> keyValues)
MutableMapIterable
map = map.withAllKeyValues(FastList.newListWith(PairImpl.of("new key", "new value")));In the case of FixedSizeMap, a new instance will be returned by withAllKeyValues, and any variables that previously referenced the original map will need to be redirected to reference the new instance. In the case of a FastMap or UnifiedMap, you will be replacing the reference to map with map, since FastMap and UnifiedMap will both return "this" after calling put on themselves.
withAllKeyValues
in interface MutableMap<K,V>
withAllKeyValues
in interface MutableMapIterable<K,V>
withAllKeyValues
in class AbstractMutableMap<K,V>
Map.put(Object, Object)
public ConcurrentHashMapUnsafe<K,V> withAllKeyValueArguments(Pair<? extends K,? extends V>... keyValues)
MutableMapIterable
withAllKeyValueArguments
in interface MutableMap<K,V>
withAllKeyValueArguments
in interface MutableMapIterable<K,V>
withAllKeyValueArguments
in class AbstractMutableMap<K,V>
MutableMapIterable.withAllKeyValues(Iterable)
public ConcurrentHashMapUnsafe<K,V> withoutKey(K key)
MutableMapIterable
map = map.withoutKey("key");In the case of FixedSizeMap, a new instance will be returned by withoutKey, and any variables that previously referenced the original map will need to be redirected to reference the new instance. In the case of a FastMap or UnifiedMap, you will be replacing the reference to map with map, since FastMap and UnifiedMap will both return "this" after calling remove on themselves.
withoutKey
in interface MutableMap<K,V>
withoutKey
in interface MutableMapIterable<K,V>
withoutKey
in class AbstractMutableMap<K,V>
Map.remove(Object)
public ConcurrentHashMapUnsafe<K,V> withoutAllKeys(Iterable<? extends K> keys)
MutableMapIterable
map = map.withoutAllKeys(FastList.newListWith("key1", "key2"));In the case of FixedSizeMap, a new instance will be returned by withoutAllKeys, and any variables that previously referenced the original map will need to be redirected to reference the new instance. In the case of a FastMap or UnifiedMap, you will be replacing the reference to map with map, since FastMap and UnifiedMap will both return "this" after calling remove on themselves.
withoutAllKeys
in interface MutableMap<K,V>
withoutAllKeys
in interface MutableMapIterable<K,V>
withoutAllKeys
in class AbstractMutableMap<K,V>
Map.remove(Object)
public MutableMap<K,V> clone()
clone
in interface MutableMap<K,V>
clone
in class AbstractMutableMap<K,V>
public <K,V> MutableMap<K,V> newEmpty(int capacity)
AbstractMutableMap
newEmpty
in class AbstractMutableMap<K,V>
public boolean notEmpty()
RichIterable
notEmpty
in interface RichIterable<V>
notEmpty
in class AbstractRichIterable<V>
public void forEachWithIndex(ObjectIntProcedure<? super V> objectIntProcedure)
InternalIterable
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() { public void value(Person person, int index) { LOGGER.info("Index: " + index + " person: " + person.getName()); } });
forEachWithIndex
in interface InternalIterable<V>
forEachWithIndex
in class AbstractMapIterable<K,V>
public MutableMap<K,V> newEmpty()
MutableMapIterable
newEmpty
in interface MutableMap<K,V>
newEmpty
in interface MutableMapIterable<K,V>
public void forEachValue(Procedure<? super V> procedure)
MapIterable
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);
forEachValue
in interface MapIterable<K,V>
forEachValue
in class AbstractMapIterable<K,V>
public void forEachKey(Procedure<? super K> procedure)
MapIterable
procedure
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);
forEachKey
in interface MapIterable<K,V>
forEachKey
in class AbstractMapIterable<K,V>
public void forEachKeyValue(Procedure2<? super K,? super V> procedure)
MapIterable
procedure
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(new Procedure2<Integer, String>() { public void value(final Integer key, final String value) { collection.add(String.valueOf(key) + value); } }); Verify.assertContainsAll(collection, "1One", "2Two", "3Three");
forEachKeyValue
in interface MapIterable<K,V>
public <E> MutableMap<K,V> collectKeysAndValues(Iterable<E> iterable, Function<? super E,? extends K> keyFunction, Function<? super E,? extends V> valueFunction)
MutableMap
iterable
to this
. The key and value for each entry
is determined by applying the keyFunction
and valueFunction
to each item in
collection
. Any entry in map
that has the same key as an entry in this
will have its value replaced by that in map
.collectKeysAndValues
in interface MutableMap<K,V>
public V removeKey(K key)
MutableMapIterable
key
.removeKey
in interface MutableMapIterable<K,V>
Map.remove(Object)
public <P> V getIfAbsentPutWith(K key, Function<? super P,? extends V> function, P parameter)
MutableMapIterable
getIfAbsentPutWith
in interface MutableMapIterable<K,V>
getIfAbsentPutWith
in class AbstractMutableMapIterable<K,V>
public V getIfAbsent(K key, Function0<? extends V> function)
MapIterable
getIfAbsent
in interface MapIterable<K,V>
getIfAbsent
in class AbstractMapIterable<K,V>
public <P> V getIfAbsentWith(K key, Function<? super P,? extends V> function, P parameter)
MapIterable
getIfAbsentWith
in interface MapIterable<K,V>
getIfAbsentWith
in class AbstractMapIterable<K,V>
public <A> A ifPresentApply(K key, Function<? super V,? extends A> function)
MapIterable
ifPresentApply
in interface MapIterable<K,V>
ifPresentApply
in class AbstractMapIterable<K,V>
public <P> void forEachWith(Procedure2<? super V,? super P> procedure, P parameter)
InternalIterable
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() { public void value(Person person, Person other) { if (person.isRelatedTo(other)) { LOGGER.info(person.getName()); } } }, fred);
forEachWith
in interface InternalIterable<V>
forEachWith
in class AbstractMapIterable<K,V>
public V updateValue(K key, Function0<? extends V> factory, Function<? super V,? extends V> function)
MutableMapIterable
key
, applies the function
to it, and replaces the value. If there
is no value associated with key
, starts it off with a value supplied by factory
.updateValue
in interface MutableMapIterable<K,V>
updateValue
in class AbstractMutableMapIterable<K,V>
public <P> V updateValueWith(K key, Function0<? extends V> factory, Function2<? super V,? super P,? extends V> function, P parameter)
MutableMapIterable
MutableMapIterable.updateValue(Object, Function0, Function)
with a Function2 and specified parameter which is
passed to the function.updateValueWith
in interface MutableMapIterable<K,V>
updateValueWith
in class AbstractMutableMapIterable<K,V>
public ImmutableMap<K,V> toImmutable()
MutableMapIterable
toImmutable
in interface MapIterable<K,V>
toImmutable
in interface MutableMapIterable<K,V>
toImmutable
in interface UnsortedMapIterable<K,V>
toImmutable
in class AbstractMutableMap<K,V>
Copyright © 2004–2016. All rights reserved.