E
- the type of elements in this setpublic final class KeySetIndexProxy<E> extends AbstractNativeProxy implements java.lang.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
,
View
nativeHandle
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.
|
java.lang.String |
getName()
Returns the name of this index.
|
java.util.Iterator<E> |
iterator()
Creates an iterator over the set elements.
|
static <E> KeySetIndexProxy<E> |
newInGroupUnsafe(java.lang.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(java.lang.String name,
View view,
java.lang.Class<E> keyType)
Creates a new key set storing protobuf messages.
|
static <E> KeySetIndexProxy<E> |
newInstance(java.lang.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.
|
java.lang.String |
toString() |
getNativeHandle, isValidHandle
public static <E extends com.google.protobuf.MessageLite> KeySetIndexProxy<E> newInstance(java.lang.String name, View view, java.lang.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 messagejava.lang.IllegalStateException
- if the view is not validjava.lang.IllegalArgumentException
- if the name is emptypublic static <E> KeySetIndexProxy<E> newInstance(java.lang.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 keysjava.lang.IllegalStateException
- if the view is not validjava.lang.IllegalArgumentException
- if the name is emptyStandardSerializers
public static <E> KeySetIndexProxy<E> newInGroupUnsafe(java.lang.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 keysjava.lang.IllegalStateException
- if the view is not validjava.lang.IllegalArgumentException
- if the name or index id is emptyStandardSerializers
public void add(E e)
e
- an element to addjava.lang.IllegalStateException
- if this set is not validjava.lang.UnsupportedOperationException
- if this set is read-onlypublic void clear()
java.lang.IllegalStateException
- if this set is not validjava.lang.UnsupportedOperationException
- if this set is read-onlypublic boolean contains(E e)
java.lang.IllegalStateException
- if this set is not validpublic java.util.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 java.lang.Iterable<E>
java.lang.IllegalStateException
- if this set is not validpublic void remove(E e)
e
- an element to remove.java.lang.IllegalStateException
- if this set is not validjava.lang.UnsupportedOperationException
- if this set is read-onlypublic final java.lang.String getName()
public java.lang.String toString()
toString
in class java.lang.Object
Copyright © 2018 Exonum. All rights reserved.