E - the type of elements in this setpublic final class KeySetIndexProxy<E> extends AbstractNativeProxy implements Iterable<E>
The elements are stored as keys in the underlying database in the lexicographical order.
As each operation accepting an element needs to pass the entire element
to the underlying database as a key, it's better, in terms of performance, to use this index
with small elements. If you need to store large elements and can perform operations
by hashes of the elements, consider using a ValueSetIndexProxy.
The "destructive" methods of the set, i.e., the ones that change its contents,
are specified to throw UnsupportedOperationException if the set has been created with
a read-only database view.
All method arguments are non-null by default.
This class is not thread-safe and and its instances shall not be shared between threads.
When the view goes out of scope, this set is destroyed. Subsequent use of the closed set
is prohibited and will result in IllegalStateException.
ValueSetIndexProxy,
ViewnativeHandle| Modifier and Type | Method and Description |
|---|---|
void |
add(E e)
Adds a new element to the set.
|
void |
clear()
Removes all of the elements from this set.
|
boolean |
contains(E e)
Returns true if this set contains the specified element.
|
String |
getName()
Returns the name of this index.
|
Iterator<E> |
iterator()
Creates an iterator over the set elements.
|
static <E> KeySetIndexProxy<E> |
newInGroupUnsafe(String groupName,
byte[] indexId,
View view,
com.exonum.binding.common.serialization.Serializer<E> serializer)
Creates a new key set in a collection group
with the given name.
|
static <E extends com.google.protobuf.MessageLite> |
newInstance(String name,
View view,
Class<E> keyType)
Creates a new key set storing protobuf messages.
|
static <E> KeySetIndexProxy<E> |
newInstance(String name,
View view,
com.exonum.binding.common.serialization.Serializer<E> serializer)
Creates a new key set proxy.
|
void |
remove(E e)
Removes the element from this set.
|
String |
toString() |
getNativeHandle, isValidHandleclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitforEach, spliteratorpublic static <E extends com.google.protobuf.MessageLite> KeySetIndexProxy<E> newInstance(String name, View view, Class<E> keyType)
E - the type of keys in this set; must be a protobuf message
that has a public static #parseFrom(byte[]) methodname - a unique alphanumeric non-empty identifier of this set in the underlying storage:
[a-zA-Z0-9_]view - a database view. Must be valid. If a view is read-only,
"destructive" operations are not permitted.keyType - the class of a key-protobuf messageIllegalStateException - if the view is not validIllegalArgumentException - if the name is emptypublic static <E> KeySetIndexProxy<E> newInstance(String name, View view, com.exonum.binding.common.serialization.Serializer<E> serializer)
E - the type of keys in this setname - a unique alphanumeric non-empty identifier of this set in the underlying storage:
[a-zA-Z0-9_]view - a database view. Must be valid. If a view is read-only,
"destructive" operations are not permitted.serializer - a serializer of set keysIllegalStateException - if the view is not validIllegalArgumentException - if the name is emptyStandardSerializerspublic static <E> KeySetIndexProxy<E> newInGroupUnsafe(String groupName, byte[] indexId, View view, com.exonum.binding.common.serialization.Serializer<E> serializer)
See a caveat on index identifiers.
E - the type of keys in this setgroupName - a name of the collection groupindexId - an identifier of this collection in the group, see the caveatsview - a database viewserializer - a serializer of set keysIllegalStateException - if the view is not validIllegalArgumentException - if the name or index id is emptyStandardSerializerspublic void add(E e)
e - an element to addIllegalStateException - if this set is not validUnsupportedOperationException - if this set is read-onlypublic void clear()
IllegalStateException - if this set is not validUnsupportedOperationException - if this set is read-onlypublic boolean contains(E e)
IllegalStateException - if this set is not validpublic Iterator<E> iterator()
Any destructive operation on the same Fork this set uses
(but not necessarily on this set) will invalidate the iterator.
iterator in interface Iterable<E>IllegalStateException - if this set is not validpublic void remove(E e)
e - an element to remove.IllegalStateException - if this set is not validUnsupportedOperationException - if this set is read-onlypublic final String getName()
Copyright © 2019 Exonum. All rights reserved.