|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
K
- keyV
- valuepublic interface IMap<K,V>
Concurrent, distributed, observable and queryable map.
This class is not a general-purpose ConcurrentMap implementation! While this class implements the Map interface, it intentionally violates Map's general contract, which mandates the use of the equals method when comparing objects. Instead of the equals method this implementation compares the serialized byte version of the objects.
Gotchas:
get(Object)
.
ConcurrentMap
,
IdentityHashMap
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface java.util.Map |
---|
Map.Entry<K,V> |
Nested classes/interfaces inherited from interface com.hazelcast.core.Instance |
---|
Instance.InstanceType |
Method Summary | |
---|---|
void |
addEntryListener(EntryListener<K,V> listener,
boolean includeValue)
Adds an entry listener for this map. |
void |
addEntryListener(EntryListener<K,V> listener,
K key,
boolean includeValue)
Adds the specified entry listener for the specified key. |
void |
addIndex(Expression<?> expression,
boolean ordered)
Adds an index to this map based on the provided expression. |
void |
addIndex(String attribute,
boolean ordered)
Adds an index to this map for the specified entries so that queries can run faster. |
void |
addLocalEntryListener(EntryListener<K,V> listener)
Adds a local entry listener for this map. |
boolean |
containsKey(Object key)
|
boolean |
containsValue(Object value)
|
Set<Map.Entry<K,V>> |
entrySet()
Returns a Set clone of the mappings contained in this map. |
Set<Map.Entry<K,V>> |
entrySet(Predicate predicate)
Queries the map based on the specified predicate and returns the matching entries. |
boolean |
evict(Object key)
Evicts the specified key from this map. |
void |
flush()
If this map has a MapStore and write-delay-seconds is bigger than 0 (write-behind) then this method flushes all the local dirty entries by calling MapStore.storeAll() |
void |
forceUnlock(K key)
Releases the lock for the specified key regardless of the lock owner. |
V |
get(Object key)
|
Map<K,V> |
getAll(Set<K> keys)
Returns the entries for the given keys. |
Future<V> |
getAsync(K key)
Asynchronously gets the given key. |
LocalMapStats |
getLocalMapStats()
Returns LocalMapStats for this map. |
MapEntry<K,V> |
getMapEntry(K key)
Returns the MapEntry for the specified key. |
String |
getName()
Returns the name of this map |
Set<K> |
keySet()
Returns a set clone of the keys contained in this map. |
Set<K> |
keySet(Predicate predicate)
Queries the map based on the specified predicate and returns the keys of matching entries. |
Set<K> |
localKeySet()
Returns the locally owned set of keys. |
Set<K> |
localKeySet(Predicate predicate)
Returns the keys of matching locally owned entries. |
void |
lock(K key)
Acquires the lock for the specified key. |
boolean |
lockMap(long time,
TimeUnit timeunit)
Tries to acquire the lock for the entire map. |
V |
put(K key,
V value)
|
V |
put(K key,
V value,
long ttl,
TimeUnit timeunit)
Puts an entry into this map with a given ttl (time to live) value. |
void |
putAndUnlock(K key,
V value)
Puts the key and value into this map and unlocks the key if the calling thread owns the lock. |
Future<V> |
putAsync(K key,
V value)
Asynchronously puts the given key and value. |
V |
putIfAbsent(K key,
V value)
|
V |
putIfAbsent(K key,
V value,
long ttl,
TimeUnit timeunit)
Puts an entry into this map with a given ttl (time to live) value if the specified key is not already associated with a value. |
void |
putTransient(K key,
V value,
long ttl,
TimeUnit timeunit)
Same as #put(K, V, long, TimeUnit) but MapStore, if defined,
will not be called to store/persist the entry. |
V |
remove(Object key)
|
boolean |
remove(Object key,
Object value)
|
Future<V> |
removeAsync(K key)
Asynchronously removes the given key. |
void |
removeEntryListener(EntryListener<K,V> listener)
Removes the specified entry listener Returns silently if there is no such listener added before. |
void |
removeEntryListener(EntryListener<K,V> listener,
K key)
Removes the specified entry listener for the specified key. |
V |
replace(K key,
V value)
|
boolean |
replace(K key,
V oldValue,
V newValue)
|
void |
set(K key,
V value,
long ttl,
TimeUnit timeunit)
Puts an entry into this map with a given ttl (time to live) value. |
boolean |
tryLock(K key)
Tries to acquire the lock for the specified key. |
boolean |
tryLock(K key,
long time,
TimeUnit timeunit)
Tries to acquire the lock for the specified key. |
V |
tryLockAndGet(K key,
long time,
TimeUnit timeunit)
Tries to acquire the lock for the specified key and returns the value of the key if lock is required in time. |
boolean |
tryPut(K key,
V value,
long timeout,
TimeUnit timeunit)
Tries to put the given key, value into this map within specified timeout value. |
Object |
tryRemove(K key,
long timeout,
TimeUnit timeunit)
Tries to remove the entry with the given key from this map within specified timeout value. |
void |
unlock(K key)
Releases the lock for the specified key. |
void |
unlockMap()
Unlocks the map. |
Collection<V> |
values()
Returns a collection clone of the values contained in this map. |
Collection<V> |
values(Predicate predicate)
Queries the map based on the specified predicate and returns the values of matching entries. |
Methods inherited from interface java.util.Map |
---|
clear, equals, hashCode, isEmpty, putAll, size |
Methods inherited from interface com.hazelcast.core.Instance |
---|
destroy, getId, getInstanceType |
Method Detail |
---|
boolean containsKey(Object key)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
containsKey
in interface Map<K,V>
boolean containsValue(Object value)
containsValue
in interface Map<K,V>
V get(Object key)
Warning:
This method returns a clone of original value, modifying the returned value does not change the actual value in the map. One should put modified value back to make changes visible to all nodes.
V value = map.get(key); value.updateSomeProperty(); map.put(key, value);
Warning-2:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.Warning-3:
If cache-value is true (default is true), this method returns a clone of original value but also caches that value for fast access in local. Modifications done to this cached value without putting it back to map will be visible to only local node, not entire cluster, successive get calls will return the same cached value. To reflect modifications to distributed map, one should put modified value back into map.
get
in interface Map<K,V>
V put(K key, V value)
Warning:
This method returns a clone of previous value, not the original (identically equal) value previously put into map.
Warning-2:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
put
in interface Map<K,V>
V remove(Object key)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
Warning-2:
This method returns a clone of previous value, not the original (identically equal) value previously put into map.
remove
in interface Map<K,V>
boolean remove(Object key, Object value)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
remove
in interface ConcurrentMap<K,V>
void flush()
String getName()
Map<K,V> getAll(Set<K> keys)
Warning:
The returned map is NOT backed by the original map, so changes to the original map are NOT reflected in the returned map, and vice-versa.Warning-2:
This method uses hashCode and equals of binary form of the keys, not the actual implementations of hashCode and equals defined in key's class.
keys
- keys to get
Future<V> getAsync(K key)
Future future = map.getAsync(key);
// do some other stuff, when ready get the result
Object value = future.get();
Future.get() will block until the actual map.get() completes.
If the application requires timely response,
then Future.get(timeout, timeunit) can be used.
try{
Future future = map.getAsync(key);
Object value = future.get(40, TimeUnit.MILLISECOND);
}catch (TimeoutException t) {
// time wasn't enough
}
ExecutionException is never thrown.
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- the key of the map entry
Future
Future<V> putAsync(K key, V value)
Future future = map.putAsync(key, value);
// do some other stuff, when ready get the result
Object oldValue = future.get();
Future.get() will block until the actual map.get() completes.
If the application requires timely response,
then Future.get(timeout, timeunit) can be used.
try{
Future future = map.putAsync(key, newValue);
Object oldValue = future.get(40, TimeUnit.MILLISECOND);
}catch (TimeoutException t) {
// time wasn't enough
}
ExecutionException is never thrown.
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- the key of the map entryvalue
- the new value of the map entry
Future
Future<V> removeAsync(K key)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- The key of the map entry to remove.
Future
from which the value
removed from the map can be retrieved.Object tryRemove(K key, long timeout, TimeUnit timeunit) throws TimeoutException
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.Warning-2:
This method returns a clone of previous value, not the original (identically equal) value previously put into map.
key
- key of the entrytimeout
- maximum time to wait for acquiring the lock
for the keytimeunit
- time unit for the timeout
TimeoutException
- if lock cannot be acquired for the given key within timeoutboolean tryPut(K key, V value, long timeout, TimeUnit timeunit)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key of the entryvalue
- value of the entrytimeout
- maximum time to waittimeunit
- time unit for the timeout
V put(K key, V value, long ttl, TimeUnit timeunit)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.Warning-2:
This method returns a clone of previous value, not the original (identically equal) value previously put into map.
key
- key of the entryvalue
- value of the entryttl
- maximum time for this entry to stay in the map
0 means infinite.timeunit
- time unit for the ttl
void putTransient(K key, V value, long ttl, TimeUnit timeunit)
#put(K, V, long, TimeUnit)
but MapStore, if defined,
will not be called to store/persist the entry. If ttl is 0, then
the entry lives forever.
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key of the entryvalue
- value of the entryttl
- maximum time for this entry to stay in the map.
0 means infinite.timeunit
- time unit for the ttlV putIfAbsent(K key, V value)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.Warning-2:
This method returns a clone of previous value, not the original (identically equal) value previously put into map.
putIfAbsent
in interface ConcurrentMap<K,V>
V putIfAbsent(K key, V value, long ttl, TimeUnit timeunit)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.Warning-2:
This method returns a clone of previous value, not the original (identically equal) value previously put into map.
key
- key of the entryvalue
- value of the entryttl
- maximum time for this entry to stay in the maptimeunit
- time unit for the ttl
boolean replace(K key, V oldValue, V newValue)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
replace
in interface ConcurrentMap<K,V>
V replace(K key, V value)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.Warning-2:
This method returns a clone of previous value, not the original (identically equal) value previously put into map.
replace
in interface ConcurrentMap<K,V>
void set(K key, V value, long ttl, TimeUnit timeunit)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key of the entryvalue
- value of the entryttl
- maximum time for this entry to stay in the map
0 means infinite.timeunit
- time unit for the ttlV tryLockAndGet(K key, long time, TimeUnit timeunit) throws TimeoutException
If the lock is not available then the current thread becomes disabled for thread scheduling purposes and lies dormant until one of two things happens:
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.Warning:
This method returns a clone of original value, modifying the returned value does not change the actual value in the map. One should put modified value back to make changes visible to all nodes.
V value = map.get(key); value.updateSomeProperty(); map.put(key, value);
key
- key of the entrytime
- maximum time to wait for the locktimeunit
- time unit of the time argument.
TimeoutException
- if lock cannot be acquired in time.void putAndUnlock(K key, V value)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key of the entryvalue
- value of the entryvoid lock(K key)
If the lock is not available then the current thread becomes disabled for thread scheduling purposes and lies dormant until the lock has been acquired.
Scope of the lock is this map only. Acquired lock is only for the key in this map. Locks are re-entrant so if the key is locked N times then it should be unlocked N times before another thread can acquire it.Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key to lock.boolean tryLock(K key)
If the lock is not available then the current thread doesn't wait and returns false immediately.
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key to lock.
boolean tryLock(K key, long time, TimeUnit timeunit)
If the lock is not available then the current thread becomes disabled for thread scheduling purposes and lies dormant until one of two things happens:
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key to lock in this maptime
- maximum time to wait for the locktimeunit
- time unit of the time argument.
void unlock(K key)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key to lock.void forceUnlock(K key)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key to lock.boolean lockMap(long time, TimeUnit timeunit)
If the lock is not available then the current thread becomes disabled for thread scheduling purposes and lies dormant until one of two things happens:
time
- maximum time to wait for the locktimeunit
- time unit of the time argument.
void unlockMap()
void addLocalEntryListener(EntryListener<K,V> listener)
map.put(key2, value2)
.
If the key2 is owned by member2 then the local listener will be
notified for the add/update event. Also note that entries can migrate to
other nodes for load balancing and/or membership change.
listener
- entry listenerlocalKeySet()
void addEntryListener(EntryListener<K,V> listener, boolean includeValue)
listener
- entry listenerincludeValue
- true if EntryEvent should
contain the value.void removeEntryListener(EntryListener<K,V> listener)
listener
- entry listenervoid addEntryListener(EntryListener<K,V> listener, K key, boolean includeValue)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
listener
- entry listenerkey
- key to listenincludeValue
- true if EntryEvent should
contain the value.void removeEntryListener(EntryListener<K,V> listener, K key)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
listener
- key
- MapEntry<K,V> getMapEntry(K key)
Warning:
This method returns a clone of original mapping, modifying the returned value does not change the actual value in the map. One should put modified value back to make changes visible to all nodes.
Warning-2:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key of the entry
MapEntry
boolean evict(Object key)
Warning:
This method uses hashCode and equals of binary form of the key, not the actual implementations of hashCode and equals defined in key's class.
key
- key to evict
Set<K> keySet()
keySet
in interface Map<K,V>
Collection<V> values()
values
in interface Map<K,V>
Set<Map.Entry<K,V>> entrySet()
Set
clone of the mappings contained in this map.
The set is NOT backed by the map,
so changes to the map are NOT reflected in the set, and vice-versa.
entrySet
in interface Map<K,V>
Set<K> keySet(Predicate predicate)
Warning:
The set is NOT backed by the map, so changes to the map are NOT reflected in the set, and vice-versa.
predicate
- query criteria
Set<Map.Entry<K,V>> entrySet(Predicate predicate)
Warning:
The set is NOT backed by the map, so changes to the map are NOT reflected in the set, and vice-versa.
predicate
- query criteria
Collection<V> values(Predicate predicate)
Warning:
The collection is NOT backed by the map, so changes to the map are NOT reflected in the collection, and vice-versa.
predicate
- query criteria
Set<K> localKeySet()
Warning:
The set is NOT backed by the map, so changes to the map are NOT reflected in the set, and vice-versa.
Set<K> localKeySet(Predicate predicate)
Warning:
The set is NOT backed by the map, so changes to the map are NOT reflected in the set, and vice-versa.
predicate
- query criteria
void addIndex(String attribute, boolean ordered)
public class Employee implements Serializable { private boolean active = false; private int age; private String name = null; // other fields. // getters setter }If you are querying your values mostly based on age and active then you should consider indexing these fields.
IMap imap = Hazelcast.getMap("employees"); imap.addIndex("age", true); // ordered, since we have ranged queries for this field imap.addIndex("active", false); // not ordered, because boolean field cannot have rangeIndex attribute should either have a getter method or be public. You should also make sure to add the indexes before adding entries to this map.
attribute
- attribute of valueordered
- true if index should be ordered,
false otherwise.void addIndex(Expression<?> expression, boolean ordered)
expression
- expression for the index.ordered
- true if index should be ordered,
false otherwise.LocalMapStats getLocalMapStats()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |