ArraySet
class ArraySet<E : Any!> : MutableCollection<E>, MutableSet<E>
kotlin.Any | |
↳ | android.util.ArraySet |
ArraySet is a generic set data structure that is designed to be more memory efficient than a traditional java.util.HashSet
. The design is very similar to ArrayMap
, with all of the caveats described there. This implementation is separate from ArrayMap, however, so the Object array contains only one item for each entry in the set (instead of a pair for a mapping).
Note that this implementation is not intended to be appropriate for data structures that may contain large numbers of items. It is generally slower than a traditional HashSet, since lookups require a binary search and adds and removes require inserting and deleting entries in the array. For containers holding up to hundreds of items, the performance difference is not significant, less than 50%.
Because this container is intended to better balance memory use, unlike most other standard Java containers it will shrink its array as items are removed from it. Currently you have no control over this shrinking -- if you set a capacity and then remove an item, it may reduce the capacity to better match the current size. In the future an explicit call to set the capacity should turn off this aggressive shrinking behavior.
This structure is NOT thread-safe.
Summary
Public constructors | |
---|---|
ArraySet() Create a new empty ArraySet. |
|
Create a new ArraySet with a given initial capacity. |
|
Create a new ArraySet with the mappings from the given ArraySet. |
|
ArraySet(set: MutableCollection<out E>!) Create a new ArraySet with items from the given collection. |
|
Create a new ArraySet with items from the given array |
Public methods | |
---|---|
Boolean |
add(element: E) Adds the specified object to this set. |
Unit |
Perform a |
Boolean |
addAll(elements: Collection<E>) Perform an |
Unit |
clear() Make the array map empty. |
Boolean |
contains(element: E) Check whether a value exists in the set. |
Boolean |
containsAll(elements: Collection<E>) Determine if the array set contains all of the values in the given collection. |
Unit |
ensureCapacity(minimumCapacity: Int) Ensure the array map can hold at least minimumCapacity items. |
Boolean |
Indicates whether some other object is "equal to" this one. |
Unit |
Performs the given action for all elements in the stored order. |
Int |
hashCode() Returns a hash code value for the object. |
Int |
Returns the index of a value in the set. |
Boolean |
isEmpty() Return true if the array map contains no items. |
MutableIterator<E> |
iterator() Return an |
Boolean |
remove(element: E) Removes the specified object from this set. |
Boolean |
Perform a |
Boolean |
removeAll(elements: Collection<E>) Remove all values in the array set that exist in the given collection. |
E |
Remove the key/value mapping at the given index. |
Boolean |
Removes all values that satisfy the predicate. |
Boolean |
retainAll(elements: Collection<E>) Remove all values in the array set that do not exist in the given collection. |
Array<Any!>! |
toArray() |
Array<T>! | |
String |
toString() Returns a string representation of the object. |
E |
Return the value at the given index in the array. |
Properties | |
---|---|
Int |
Return the number of items in this array map. |
Public constructors
ArraySet
ArraySet()
Create a new empty ArraySet. The default capacity of an array map is 0, and will grow once items are added to it.
ArraySet
ArraySet(capacity: Int)
Create a new ArraySet with a given initial capacity.
ArraySet
ArraySet(set: ArraySet<E>!)
Create a new ArraySet with the mappings from the given ArraySet.
ArraySet
ArraySet(set: MutableCollection<out E>!)
Create a new ArraySet with items from the given collection.
ArraySet
ArraySet(array: Array<E>?)
Create a new ArraySet with items from the given array
Parameters | |
---|---|
array |
Array<E>?: This value may be null . |
Public methods
add
fun add(element: E): Boolean
Adds the specified object to this set. The set is not modified if it already contains the object.
Parameters | |
---|---|
e |
element to be added to this set |
value |
the object to add. |
Return | |
---|---|
Boolean |
true if this set is modified, false otherwise. |
Exceptions | |
---|---|
java.lang.UnsupportedOperationException |
if the add operation is not supported by this set |
java.lang.ClassCastException |
if the class of the specified element prevents it from being added to this set |
java.lang.NullPointerException |
if the specified element is null and this set does not permit null elements |
java.lang.IllegalArgumentException |
if some property of the specified element prevents it from being added to this set |
java.lang.IllegalStateException |
if the element cannot be added at this time due to insertion restrictions |
addAll
fun addAll(array: ArraySet<out E>!): Unit
Perform a add(java.lang.Object)
of all values in array
Parameters | |
---|---|
array |
ArraySet<out E>!: The array whose contents are to be retrieved. |
addAll
fun addAll(elements: Collection<E>): Boolean
Perform an add(java.lang.Object)
of all values in collection
Parameters | |
---|---|
c |
collection containing elements to be added to this set |
collection |
The collection whose contents are to be retrieved. |
Return | |
---|---|
Boolean |
true if this set changed as a result of the call |
Exceptions | |
---|---|
java.lang.UnsupportedOperationException |
if the addAll operation is not supported by this set |
java.lang.ClassCastException |
if the class of an element of the specified collection prevents it from being added to this set |
java.lang.NullPointerException |
if the specified collection contains one or more null elements and this set does not permit null elements, or if the specified collection is null |
java.lang.IllegalArgumentException |
if some property of an element of the specified collection prevents it from being added to this set |
java.lang.IllegalStateException |
if not all the elements can be added at this time due to insertion restrictions |
clear
fun clear(): Unit
Make the array map empty. All storage is released.
Exceptions | |
---|---|
java.lang.UnsupportedOperationException |
if the clear method is not supported by this set |
contains
fun contains(element: E): Boolean
Check whether a value exists in the set.
Parameters | |
---|---|
o |
element whose presence in this set is to be tested |
key |
The value to search for. |
Return | |
---|---|
Boolean |
Returns true if the value exists, else false. |
Exceptions | |
---|---|
java.lang.ClassCastException |
if the type of the specified element is incompatible with this set (optional) |
java.lang.NullPointerException |
if the specified element is null and this set does not permit null elements (optional) |
containsAll
fun containsAll(elements: Collection<E>): Boolean
Determine if the array set contains all of the values in the given collection.
Parameters | |
---|---|
c |
collection to be checked for containment in this set |
collection |
The collection whose contents are to be checked against. |
Return | |
---|---|
Boolean |
Returns true if this array set contains a value for every entry in collection, else returns false. |
Exceptions | |
---|---|
java.lang.ClassCastException |
if the types of one or more elements in the specified collection are incompatible with this set (optional) |
java.lang.NullPointerException |
if the specified collection contains one or more null elements and this set does not permit null elements (optional), or if the specified collection is null |
ensureCapacity
fun ensureCapacity(minimumCapacity: Int): Unit
Ensure the array map can hold at least minimumCapacity items.
equals
fun equals(other: Any?): Boolean
Indicates whether some other object is "equal to" this one.
The equals
method implements an equivalence relation on non-null object references:
- It is reflexive: for any non-null reference value
x
,x.equals(x)
should returntrue
. - It is symmetric: for any non-null reference values
x
andy
,x.equals(y)
should returntrue
if and only ify.equals(x)
returnstrue
. - It is transitive: for any non-null reference values
x
,y
, andz
, ifx.equals(y)
returnstrue
andy.equals(z)
returnstrue
, thenx.equals(z)
should returntrue
. - It is consistent: for any non-null reference values
x
andy
, multiple invocations ofx.equals(y)
consistently returntrue
or consistently returnfalse
, provided no information used inequals
comparisons on the objects is modified. - For any non-null reference value
x
,x.equals(null)
should returnfalse
.
An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.
This implementation returns false if the object is not a set, or if the sets have different sizes. Otherwise, for each value in this set, it checks to make sure the value also exists in the other set. If any value doesn't exist, the method returns false; otherwise, it returns true.
Parameters | |
---|---|
obj |
the reference object with which to compare. |
o |
object to be compared for equality with this set |
object |
This value may be null . |
Return | |
---|---|
Boolean |
true if the specified object is equal to this set |
forEach
fun forEach(action: Consumer<in E>): Unit
Performs the given action for all elements in the stored order. This implementation overrides the default implementation to avoid using the #iterator().
Parameters | |
---|---|
action |
Consumer<in E>: The action to be performed for each element |
Exceptions | |
---|---|
java.lang.NullPointerException |
if the specified action is null |
hashCode
fun hashCode(): Int
Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap
.
The general contract of hashCode
is:
- Whenever it is invoked on the same object more than once during an execution of a Java application, the
hashCode
method must consistently return the same integer, provided no information used inequals
comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. - If two objects are equal according to the
equals
method, then calling thehashCode
method on each of the two objects must produce the same integer result. - It is not required that if two objects are unequal according to the
equals
method, then calling thehashCode
method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Return | |
---|---|
Int |
the hash code value for this set |
indexOf
fun indexOf(key: Any!): Int
Returns the index of a value in the set.
Parameters | |
---|---|
key |
Any!: The value to search for. |
Return | |
---|---|
Int |
Returns the index of the value if it exists, else a negative integer. |
isEmpty
fun isEmpty(): Boolean
Return true if the array map contains no items.
Return | |
---|---|
Boolean |
true if this set contains no elements |
iterator
fun iterator(): MutableIterator<E>
Return an java.util.Iterator
over all values in the set.
Note: this is a fairly inefficient way to access the array contents, it requires generating a number of temporary objects and allocates additional state information associated with the container that will remain for the life of the container.
Return | |
---|---|
MutableIterator<E> |
an iterator over the elements in this set |
remove
fun remove(element: E): Boolean
Removes the specified object from this set.
Parameters | |
---|---|
o |
object to be removed from this set, if present |
object |
the object to remove. |
Return | |
---|---|
Boolean |
true if this set was modified, false otherwise. |
Exceptions | |
---|---|
java.lang.ClassCastException |
if the type of the specified element is incompatible with this set (optional) |
java.lang.NullPointerException |
if the specified element is null and this set does not permit null elements (optional) |
java.lang.UnsupportedOperationException |
if the remove operation is not supported by this set |
removeAll
fun removeAll(array: ArraySet<out E>!): Boolean
Perform a remove(java.lang.Object)
of all values in array
Parameters | |
---|---|
array |
ArraySet<out E>!: The array whose contents are to be removed. |
removeAll
fun removeAll(elements: Collection<E>): Boolean
Remove all values in the array set that exist in the given collection.
Parameters | |
---|---|
c |
collection containing elements to be removed from this set |
collection |
The collection whose contents are to be used to remove values. |
Return | |
---|---|
Boolean |
Returns true if any values were removed from the array set, else false. |
Exceptions | |
---|---|
java.lang.UnsupportedOperationException |
if the removeAll operation is not supported by this set |
java.lang.ClassCastException |
if the class of an element of this set is incompatible with the specified collection (optional) |
java.lang.NullPointerException |
if this set contains a null element and the specified collection does not permit null elements (optional), or if the specified collection is null |
removeAt
fun removeAt(index: Int): E
Remove the key/value mapping at the given index.
For indices outside of the range 0...size()-1
, the behavior is undefined for apps targeting android.os.Build.VERSION_CODES#P
and earlier, and an ArrayIndexOutOfBoundsException
is thrown for apps targeting android.os.Build.VERSION_CODES#Q
and later.
Parameters | |
---|---|
index |
Int: The desired index, must be between 0 and size() -1. |
Return | |
---|---|
E |
Returns the value that was stored at this index. |
removeIf
fun removeIf(filter: Predicate<in E>): Boolean
Removes all values that satisfy the predicate. This implementation avoids using the #iterator().
Parameters | |
---|---|
filter |
Predicate<in E>: A predicate which returns true for elements to be removed |
Return | |
---|---|
Boolean |
true if any elements were removed |
Exceptions | |
---|---|
java.lang.NullPointerException |
if the specified filter is null |
java.lang.UnsupportedOperationException |
if elements cannot be removed from this collection. Implementations may throw this exception if a matching element cannot be removed or if, in general, removal is not supported. |
retainAll
fun retainAll(elements: Collection<E>): Boolean
Remove all values in the array set that do not exist in the given collection.
Parameters | |
---|---|
c |
collection containing elements to be retained in this set |
collection |
The collection whose contents are to be used to determine which values to keep. |
Return | |
---|---|
Boolean |
Returns true if any values were removed from the array set, else false. |
Exceptions | |
---|---|
java.lang.UnsupportedOperationException |
if the retainAll operation is not supported by this set |
java.lang.ClassCastException |
if the class of an element of this set is incompatible with the specified collection (optional) |
java.lang.NullPointerException |
if this set contains a null element and the specified collection does not permit null elements (optional), or if the specified collection is null |
toArray
fun toArray(): Array<Any!>!
Return | |
---|---|
Array<Any!>! |
an array containing all the elements in this set |
toArray
fun <T : Any!> toArray(array: Array<T>!): Array<T>!
Parameters | |
---|---|
<T> |
the component type of the array to contain the collection |
a |
the array into which the elements of this set are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose. |
Return | |
---|---|
Array<T>! |
an array containing all the elements in this set |
Exceptions | |
---|---|
java.lang.ArrayStoreException |
if the runtime type of the specified array is not a supertype of the runtime type of every element in this set |
java.lang.NullPointerException |
if the specified array is null |
toString
fun toString(): String
Returns a string representation of the object.
This implementation composes a string by iterating over its values. If this set contains itself as a value, the string "(this Set)" will appear in its place.
Return | |
---|---|
String |
a string representation of the object. |
valueAt
fun valueAt(index: Int): E
Return the value at the given index in the array.
For indices outside of the range 0...size()-1
, the behavior is undefined for apps targeting android.os.Build.VERSION_CODES#P
and earlier, and an ArrayIndexOutOfBoundsException
is thrown for apps targeting android.os.Build.VERSION_CODES#Q
and later.
Parameters | |
---|---|
index |
Int: The desired index, must be between 0 and size() -1. |
Return | |
---|---|
E |
Returns the value stored at the given index. |
Properties
size
val size: Int
Return the number of items in this array map.
Return | |
---|---|
Int |
the number of elements in this set (its cardinality) |