2.8.3. IMap Interface

public interface IMap <K,V> extends ConcurrentMap <K,V>, BaseMap<K,V>, Iterable <Map.Entry <K,V>> {

    // Synchronous access methods

    V get (Object key);
    Map <K,V> getAll (Set <K> keys);

    void set (K key, V value);
    void setAll (Map <? extends K, ? extends V> map);

    V put (K key, V value);
    V putIfAbsent (K key, V value);
    void putAll (Map <? extends K, ? extends V> map);

    V replace (K key, V value);
    boolean replace (K key, V oldValue, V newValue);

    V remove (Object key);
    boolean remove (Object key, Object value);
    void removeAll (Predicate <K,V> predicate);

    void delete (Object key);
    void clear ();

    boolean containsKey (Object key);
    boolean containsValue (Object value);

    Iterator <Entry <K,V>> iterator ();
    Iterator <Entry <K,V>> iterator (int fetchSize);

    Set <K> keySet ();
    Set <K> keySet (Predicate <K,V> predicate);
    Set <K> localKeySet ();
    Set <K> localKeySet (Predicate <K,V> predicate);
    Collection <V> values ();
    Collection <V> values (Predicate <K,V> predicate);
    Set <Map.Entry <K,V>> entrySet ();
    Set <Map.Entry <K,V>> entrySet (Predicate <K,V> predicate);

    // Entries can have limited lifetime

    boolean setTtl (K key, long ttl, TimeUnit timeunit);

    void set (K key, V value, long ttl, TimeUnit ttlUnit);
    void set (K key, V value, long ttl, TimeUnit ttlUnit, long maxIdle, TimeUnit maxIdleUnit);

    V put (K key, V value, long ttl, TimeUnit ttlUnit);
    V put (K key, V value, long ttl, TimeUnit ttlUnit, long maxIdle, TimeUnit maxIdleUnit);
    V putIfAbsent (K key, V value, long ttl, TimeUnit ttlUnit);
    V putIfAbsent (K key, V value, long ttl, TimeUnit ttlUnit, long maxIdle, TimeUnit maxIdleUnit);

    // Keys can be locked even if absent

    void lock (K key);
    void lock (K key, long leaseTime, TimeUnit timeUnit);
    boolean tryLock (K key);
    boolean tryLock (K key, long time, TimeUnit timeunit);
    boolean tryLock (K key, long time, TimeUnit timeunit, long leaseTime, TimeUnit leaseTimeunit);

    void unlock (K key);
    void forceUnlock (K key);

    boolean isLocked (K key);

    boolean tryPut (K key, V value, long timeout, TimeUnit timeunit);
    boolean tryRemove (K key, long timeout, TimeUnit timeunit);

    // Asynchronous access methods

    CompletionStage <V> getAsync (K key);

    CompletionStage <Void> setAsync (K key, V value);
    CompletionStage <Void> setAsync (K key, V value, long ttl, TimeUnit ttlUnit);
    CompletionStage <Void> setAsync (K key, V value, long ttl, TimeUnit ttlUnit, long maxIdle, TimeUnit maxIdleUnit);
    CompletionStage <Void> setAllAsync (Map <? extends K, ? extends V> map);

    CompletionStage <V> putAsync (K key, V value);
    CompletionStage <V> putAsync (K key, V value, long ttl, TimeUnit ttlUnit);
    CompletionStage <V> putAsync (K key, V value, long ttl, TimeUnit ttlUnit, long maxIdle, TimeUnit maxIdleUnit);
    CompletionStage <Void> putAllAsync (Map <? extends K, ? extends V> map);

    CompletionStage <V> removeAsync (K key);

    // Non transient entries can have backing store

    void loadAll(boolean replaceExistingValues);
    void loadAll(Set<K> keys, boolean replaceExistingValues);

    boolean evict (K key);
    void evictAll ();
    void flush();

    void putTransient (K key, V value, long ttl, TimeUnit ttlUnit);
    void putTransient (K key, V value, long ttl, TimeUnit ttlUnit, long maxIdle, TimeUnit maxIdleUnit);

    // Local and global state change listeners with predicate filtering are supported

    UUID addLocalEntryListener (MapListener listener);
    UUID addLocalEntryListener (MapListener listener, Predicate <K,V> predicate, boolean includeValue);
    UUID addLocalEntryListener (MapListener listener, Predicate <K,V> predicate, K key, boolean includeValue);

    UUID addEntryListener (MapListener listener, boolean includeValue);
    UUID addEntryListener (MapListener listener, K key, boolean includeValue);
    UUID addEntryListener (MapListener listener, Predicate <K,V> predicate, boolean includeValue);
    UUID addEntryListener (MapListener listener, Predicate <K,V> predicate, K key, boolean includeValue);

    boolean removeEntryListener (UUID id);

    UUID addPartitionLostListener (MapPartitionLostListener listener);
    boolean removePartitionLostListener (UUID id);

    // Interceptors can modify or cancel operations

    String addInterceptor (MapInterceptor interceptor);
    boolean removeInterceptor (String id);

    // Entry view provides entry access statistics

    EntryView <K,V> getEntryView (K key);
    LocalMapStats getLocalMapStats ();

    // Distributed processing

    <R> R executeOnKey (K key, EntryProcessor <K,V,R> entryProcessor);
    <R> Map <K,R> executeOnKeys (Set<K> keys, EntryProcessor <K,V,R> entryProcessor);
    <R> Map <K,R> executeOnEntries (EntryProcessor <K,V,R> entryProcessor);
    <R> Map <K,R> executeOnEntries (EntryProcessor <K,V,R> entryProcessor, Predicate <K,V> predicate);

    <R> Collection <R> project (Projection <? super Map.Entry<K,V>,R> projection);
    <R> Collection <R> project (Projection <? super Map.Entry<K,V>,R> projection, Predicate <K,V> predicate);

    <R> R aggregate (Aggregator <? super Map.Entry <K,V>,R> aggregator);
    <R> R aggregate (Aggregator <? super Map.Entry <K,V>,R> aggregator, Predicate <K,V> predicate);

    <R> CompletionStage <R> submitToKey (K key, EntryProcessor <K,V,R> entryProcessor);
    <R> CompletionStage <Map<K,R>> submitToKeys (Set<K> keys, EntryProcessor <K,V,R> entryProcessor);

    // Cache for continuous queries defined by predicates

    QueryCache <K,V> getQueryCache (String name);
    QueryCache <K,V> getQueryCache (String name, Predicate <K,V> predicate, boolean includeValue);
    QueryCache <K,V> getQueryCache (String name, MapListener listener, Predicate <K,V> predicate, boolean includeValue);

    ...
}