Class MapIndexProxy<K,V>
- java.lang.Object
-
- com.exonum.binding.core.proxy.AbstractNativeProxy
-
- com.exonum.binding.core.storage.indices.MapIndexProxy<K,V>
-
- Type Parameters:
K- the type of keys in this mapV- the type of values in this map
- All Implemented Interfaces:
MapIndex<K,V>,StorageIndex
public final class MapIndexProxy<K,V> extends AbstractNativeProxy implements MapIndex<K,V>
A MapIndex is an index that maps keys to values. A map cannot contain duplicate keys; each key corresponds to at most one value.The map implementation does not permit null keys and values.
The "destructive" methods of the map, i.e., the one that change the map contents, are specified to throw
UnsupportedOperationExceptionif the map has been created with a read-only database access.All method arguments are non-null by default.
This class is not thread-safe and its instances shall not be shared between threads.
When the access goes out of scope, this map is destroyed. Subsequent use of the closed map is prohibited and will result in
IllegalStateException.- See Also:
Access
-
-
Field Summary
-
Fields inherited from class com.exonum.binding.core.proxy.AbstractNativeProxy
nativeHandle
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()Removes all of the key-value pairs from the map.booleancontainsKey(K key)Returns true if this map contains a mapping for the specified key.Iterator<com.exonum.binding.common.collect.MapEntry<K,V>>entries()Returns an iterator over the map entries.Vget(K key)Returns the value associated with the specified key, ornullif there is no mapping for the key.IndexAddressgetAddress()Returns the index address: its identifier in the database.Iterator<K>keys()Returns an iterator over the map keys.static <K,V>
MapIndexProxy<K,V>newInstance(IndexAddress address, AbstractAccess access, com.exonum.binding.common.serialization.Serializer<K> keySerializer, com.exonum.binding.common.serialization.Serializer<V> valueSerializer)Creates a new MapIndexProxy.voidput(K key, V value)Puts a new key-value pair into the map.voidputAll(Map<? extends K,? extends V> sourceMap)Puts all key-value pairs from the given map into this map.voidremove(K key)Removes the value mapped to the specified key from the map.StringtoString()Iterator<V>values()Returns an iterator over the map values.-
Methods inherited from class com.exonum.binding.core.proxy.AbstractNativeProxy
getNativeHandle, isValidHandle
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.exonum.binding.core.storage.indices.StorageIndex
getAddress, getName
-
-
-
-
Method Detail
-
newInstance
public static <K,V> MapIndexProxy<K,V> newInstance(IndexAddress address, AbstractAccess access, com.exonum.binding.common.serialization.Serializer<K> keySerializer, com.exonum.binding.common.serialization.Serializer<V> valueSerializer)
Creates a new MapIndexProxy.Warning: do not invoke this method from service code, use
Access.getMap(IndexAddress, Serializer, Serializer).- Type Parameters:
K- the type of keys in the mapV- the type of values in the map- Parameters:
address- an index addressaccess- a database access. Must be valid. If an access is read-only, "destructive" operations are not permitted.keySerializer- a serializer of keysvalueSerializer- a serializer of values- Throws:
IllegalStateException- if the access is not validIllegalArgumentException- if the name is empty- See Also:
StandardSerializers
-
containsKey
public boolean containsKey(K key)
Description copied from interface:MapIndexReturns true if this map contains a mapping for the specified key.- Specified by:
containsKeyin interfaceMapIndex<K,V>
-
put
public void put(K key, V value)
Description copied from interface:MapIndexPuts a new key-value pair into the map. If this map already contains a mapping for the specified key, overwrites the old value with the specified value.
-
putAll
public void putAll(Map<? extends K,? extends V> sourceMap)
Description copied from interface:MapIndexPuts all key-value pairs from the given map into this map. Equivalent to a sequence of individualMapIndex.put(K, V)operations.
-
get
public V get(K key)
Description copied from interface:MapIndexReturns the value associated with the specified key, ornullif there is no mapping for the key.
-
remove
public void remove(K key)
Description copied from interface:MapIndexRemoves the value mapped to the specified key from the map. If there is no such mapping, has no effect.
-
keys
public Iterator<K> keys()
Description copied from interface:MapIndexReturns an iterator over the map keys. The keys are ordered in lexicographical order.
-
values
public Iterator<V> values()
Description copied from interface:MapIndexReturns an iterator over the map values. The values are ordered in lexicographical order of keys.
-
entries
public Iterator<com.exonum.binding.common.collect.MapEntry<K,V>> entries()
Description copied from interface:MapIndexReturns an iterator over the map entries. The entries are ordered by keys in lexicographical order.
-
clear
public void clear()
Description copied from interface:MapIndexRemoves all of the key-value pairs from the map. The map will be empty after this method returns.
-
getAddress
public IndexAddress getAddress()
Description copied from interface:StorageIndexReturns the index address: its identifier in the database.Please note that the implementations may return either relative or absolute address. The address is not required to be equal to the one passed to the index constructor.
- Specified by:
getAddressin interfaceStorageIndex
-
-