public final class ArraySet
extends Object
implements Collection<E>, Set<E>
java.lang.Object | |
↳ | android.util.ArraySet<E> |
ArraySet是一种通用集合数据结构,与传统的HashSet
相比,其设计的内存效率HashSet
。 该设计非常类似于ArrayMap
,其中描述了所有注意事项。 然而,此实现与ArrayMap是分开的,因此Object数组只包含一个用于该集合中每个条目的项目(而不是用于映射的一个项目)。
请注意,此实现不适用于可能包含大量项目的数据结构。 它通常比传统的HashSet慢,因为查找需要二分搜索并添加和删除需要插入和删除数组中的条目。 对于容纳数百种物品的容器,性能差异不显着,小于50%。
由于此容器旨在更好地平衡内存使用,与大多数其他标准Java容器不同,它会在从其中删除项目时收缩其阵列。 目前,您无法控制这种缩小 - 如果您设置容量然后移除项目,则可能会降低容量以更好地匹配当前大小。 未来,设置容量的明确要求应该关闭这种积极的收缩行为。
Public constructors |
|
---|---|
ArraySet() 创建一个新的空ArraySet。 |
|
ArraySet(int capacity) 用给定的初始容量创建一个新的ArraySet。 |
|
ArraySet(ArraySet<E> set) 使用给定ArraySet的映射创建一个新的ArraySet。 |
Public methods |
|
---|---|
boolean |
add(E value) 将指定的对象添加到该集合。 |
boolean |
addAll(Collection<? extends E> collection) 执行 |
void |
addAll(ArraySet<? extends E> array) 在 数组中执行所有值的 |
void |
clear() 使数组映射为空。 |
boolean |
contains(Object key) 检查集合中是否存在值。 |
boolean |
containsAll(Collection<?> collection) 确定数组集是否包含给定集合中的所有值。 |
void |
ensureCapacity(int minimumCapacity) 确保数组映射至少可以容纳 minimumCapacity项目。 |
boolean |
equals(Object object) 指示其他某个对象是否“等于”这一个。 如果对象不是集合,或者集合具有不同的大小,则此实现返回false。 |
int |
hashCode() 返回对象的哈希码值。 |
int |
indexOf(Object key) 返回集合中某个值的索引。 |
boolean |
isEmpty() 如果数组映射不包含项目,则返回true。 |
Iterator<E> |
iterator() 在集合中的所有值上返回 |
boolean |
remove(Object object) 从该集合中删除指定的对象。 |
boolean |
removeAll(Collection<?> collection) 删除给定集合中存在的数组集合中的所有值。 |
boolean |
removeAll(ArraySet<? extends E> array) 在 数组中执行所有值的 |
E |
removeAt(int index) 删除给定索引处的键/值映射。 |
boolean |
retainAll(Collection<?> collection) 删除给定集合中 不存在的数组集合中的所有值。 |
int |
size() 返回此数组映射中的项目数。 |
<T> T[] |
toArray(T[] array) 返回包含此集合中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型。 |
Object[] |
toArray() 返回包含此集合中所有元素的数组。 |
String |
toString() 返回对象的字符串表示形式。 这个实现通过遍历它的值来组成一个字符串。 |
E |
valueAt(int index) 返回数组中给定索引的值。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface java.util.Collection
|
|
From interface java.util.Set
|
|
From interface java.lang.Iterable
|
ArraySet (int capacity)
用给定的初始容量创建一个新的ArraySet。
Parameters | |
---|---|
capacity |
int
|
ArraySet (ArraySet<E> set)
使用给定ArraySet的映射创建一个新的ArraySet。
Parameters | |
---|---|
set |
ArraySet
|
boolean add (E value)
将指定的对象添加到该集合。 如果该集合已经包含该对象,则该集合不会被修改。
Parameters | |
---|---|
value |
E : the object to add. |
Returns | |
---|---|
boolean |
true if this set is modified, false otherwise. |
Throws | |
---|---|
ClassCastException |
when the class of the object is inappropriate for this set. |
boolean addAll (Collection<? extends E> collection)
执行 add(Object)
中 收集的所有值
Parameters | |
---|---|
collection |
Collection : The collection whose contents are to be retrieved. |
Returns | |
---|---|
boolean |
true if this collection changed as a result of the call |
void addAll (ArraySet<? extends E> array)
执行 add(Object)
在 阵列中的所有值的
Parameters | |
---|---|
array |
ArraySet : The array whose contents are to be retrieved. |
boolean contains (Object key)
检查集合中是否存在值。
Parameters | |
---|---|
key |
Object : The value to search for. |
Returns | |
---|---|
boolean |
Returns true if the value exists, else false. |
boolean containsAll (Collection<?> collection)
确定数组集是否包含给定集合中的所有值。
Parameters | |
---|---|
collection |
Collection : The collection whose contents are to be checked against. |
Returns | |
---|---|
boolean |
Returns true if this array set contains a value for every entry in collection, else returns false. |
void ensureCapacity (int minimumCapacity)
确保数组映射至少可以容纳 minimumCapacity项目。
Parameters | |
---|---|
minimumCapacity |
int
|
boolean equals (Object object)
指示其他某个对象是否“等于”这一个。
equals
方法在非空对象引用上实现等价关系:
x
, x.equals(x)
should return true
. x
and y
, x.equals(y)
should return true
if and only if y.equals(x)
returns true
. x
, y
, and z
, if x.equals(y)
returns true
and y.equals(z)
returns true
, then x.equals(z)
should return true
. x
and y
, multiple invocations of x.equals(y)
consistently return true
or consistently return false
, provided no information used in equals
comparisons on the objects is modified. x
, x.equals(null)
should return false
. 类Object
的equals
方法实现了对象上最可能的等价关系; 也就是说,对于任何非空参考值x
和y
,当且仅当x
和y
引用同一对象( x == y
的值为true
)时,此方法返回true
。
请注意,无论何时重写此方法,通常都需要重写 hashCode
方法,以便维护 hashCode
方法的常规协定,该方法声明等同对象必须具有相同的哈希码。
如果对象不是集合,或者集合具有不同的大小,则此实现返回false。 否则,对于这个集合中的每个值,它都会检查以确保该值也存在于另一个集合中。 如果任何值不存在,则该方法返回false; 否则,它返回true。
Parameters | |
---|---|
object |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if this object is the same as the obj argument; false otherwise. |
int hashCode ()
返回对象的哈希码值。 为了散列表的好处而支持该方法,例如由HashMap
提供的HashMap
。
hashCode
的总合同是:
hashCode
method must consistently return the same integer, provided no information used in equals
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. equals(Object)
method, then calling the hashCode
method on each of the two objects must produce the same integer result. equals(java.lang.Object)
method, then calling the hashCode
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. 尽可能合理实用,类Object
定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java TM编程语言不需要此实现技术。)
Returns | |
---|---|
int |
a hash code value for this object. |
int indexOf (Object key)
返回集合中某个值的索引。
Parameters | |
---|---|
key |
Object : The value to search for. |
Returns | |
---|---|
int |
Returns the index of the value if it exists, else a negative integer. |
boolean isEmpty ()
如果数组映射不包含项目,则返回true。
Returns | |
---|---|
boolean |
true if this collection contains no elements |
Iterator<E> iterator ()
注意:这是访问数组内容的一种相当低效的方式,它需要生成许多临时对象并分配与该容器关联的附加状态信息,这些信息将在容器的使用期限内保留。
Returns | |
---|---|
Iterator<E> |
an Iterator over the elements in this collection |
boolean remove (Object object)
从该集合中删除指定的对象。
Parameters | |
---|---|
object |
Object : the object to remove. |
Returns | |
---|---|
boolean |
true if this set was modified, false otherwise. |
boolean removeAll (Collection<?> collection)
删除给定集合中存在的数组集合中的所有值。
Parameters | |
---|---|
collection |
Collection : The collection whose contents are to be used to remove values. |
Returns | |
---|---|
boolean |
Returns true if any values were removed from the array set, else false. |
boolean removeAll (ArraySet<? extends E> array)
执行 remove(Object)
在 阵列中的所有值的
Parameters | |
---|---|
array |
ArraySet : The array whose contents are to be removed. |
Returns | |
---|---|
boolean |
E removeAt (int index)
删除给定索引处的键/值映射。
Parameters | |
---|---|
index |
int : The desired index, must be between 0 and size() -1. |
Returns | |
---|---|
E |
Returns the value that was stored at this index. |
boolean retainAll (Collection<?> collection)
删除给定集合中 不存在的数组集合中的所有值。
Parameters | |
---|---|
collection |
Collection : The collection whose contents are to be used to determine which values to keep. |
Returns | |
---|---|
boolean |
Returns true if any values were removed from the array set, else false. |
int size ()
返回此数组映射中的项目数。
Returns | |
---|---|
int |
the number of elements in this collection |
T[] toArray (T[] array)
返回包含此集合中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型。 如果集合适合指定的数组,则将其返回。 否则,将使用指定数组的运行时类型和此集合的大小分配一个新数组。
如果此集合符合指定的数组并且有空余空间(即数组的元素多于此集合),则紧跟集合结束后的数组中的元素设置为null 。 ( 只有在调用者知道该集合不包含任何null元素时,这对于确定此集合的长度非常有用。)
如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同顺序返回元素。
与toArray()
方法一样,此方法充当基于数组和基于集合的API之间的桥梁。 此外,该方法允许精确控制输出数组的运行时类型,并且在某些情况下可以用于节省分配成本。
假设x是一个已知只包含字符串的集合。 以下代码可用于将集合转储到新分配的String数组中:
String[] y = x.toArray(new String[0]);Note that toArray(new Object[0]) is identical in function to toArray().
Parameters | |
---|---|
array |
T : the array into which the elements of this collection are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose. |
Returns | |
---|---|
T[] |
an array containing all of the elements in this collection |
Object[] toArray ()
返回包含此集合中所有元素的数组。 如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同顺序返回元素。
返回的数组将是“安全的”,因为这个集合没有维护它的引用。 (换句话说,即使该集合由数组支持,该方法也必须分配一个新数组)。 调用者可以自由修改返回的数组。
此方法充当基于数组和基于集合的API之间的桥梁。
Returns | |
---|---|
Object[] |
an array containing all of the elements in this collection |
String toString ()
返回对象的字符串表示形式。 一般来说, toString
方法会返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
这个实现通过遍历它的值来组成一个字符串。 如果这个集合本身作为一个值,字符串“(这个集合)”将出现在它的位置。
Returns | |
---|---|
String |
a string representation of the object. |
E valueAt (int index)
返回数组中给定索引的值。
Parameters | |
---|---|
index |
int : The desired index, must be between 0 and size() -1. |
Returns | |
---|---|
E |
Returns the value stored at the given index. |