Most visited

Recently visited

Added in API level 19

ArrayMap

public final class ArrayMap
extends Object implements Map<K, V>

java.lang.Object
   ↳ android.util.ArrayMap<K, V>


ArrayMap是一种通用的键 - >值映射数据结构,与传统的HashMap相比,其设计的内存效率HashMap 它将映射保存在数组数据结构中 - 每个项目的哈希代码的整数数组,以及键/值对的Object数组。 这使得它可以避免为放入地图的每个条目创建额外的对象,并且还试图更积极地控制这些数组大小的增长(因为增长它们只需要复制数组中的条目,而不是重建哈希映射)。

请注意,此实现不适用于可能包含大量项目的数据结构。 它通常比传统的HashMap慢,因为查找需要二分搜索并添加和删除需要插入和删除数组中的条目。 对于容纳数百种物品的容器,性能差异不显着,小于50%。

由于此容器旨在更好地平衡内存使用,与大多数其他标准Java容器不同,它会在从其中删除项目时收缩其阵列。 目前,您无法控制这种缩小 - 如果您设置容量然后移除项目,则可能会降低容量以更好地匹配当前大小。 未来,设置容量的明确要求应该关闭这种积极的收缩行为。

Summary

Public constructors

ArrayMap()

创建一个新的空ArrayMap。

ArrayMap(int capacity)

用给定的初始容量创建一个新的ArrayMap。

ArrayMap(ArrayMap<K, V> map)

使用给定ArrayMap的映射创建一个新的ArrayMap。

Public methods

void clear()

使数组映射为空。

boolean containsAll(Collection<?> collection)

确定数组映射是否包含给定集合中的所有键。

boolean containsKey(Object key)

检查数组中是否存在密钥。

boolean containsValue(Object value)

检查数组中是否存在值。

void ensureCapacity(int minimumCapacity)

确保数组映射至少可以容纳 minimumCapacity项目。

Set<Entry<K, V>> entrySet()

返回一个 Set用于迭代数组映射中的所有映射并与其进行交互。

boolean equals(Object object)

指示其他某个对象是否“等于”这一个。

如果对象不是地图,或者地图的大小不同,则此实现返回false。

V get(Object key)

从数组中检索一个值。

int hashCode()

返回对象的哈希码值。

int indexOfKey(Object key)

返回集合中某个键的索引。

boolean isEmpty()

如果数组映射不包含项目,则返回true。

K keyAt(int index)

返回数组中给定索引处的键。

Set<K> keySet()

返回一个 Set用于遍历数组映射中的所有键并与其交互。

V put(K key, V value)

给数组映射添加一个新值。

void putAll(ArrayMap<? extends K, ? extends V> array)

执行 put(Object, Object)阵列中的所有键/值对

void putAll(Map<? extends K, ? extends V> map)

地图中执行所有键/值对的 put(Object, Object)

V remove(Object key)

从阵列图中删除现有的键。

boolean removeAll(Collection<?> collection)

删除给定集合中存在的数组映射中的所有键。

V removeAt(int index)

删除给定索引处的键/值映射。

boolean retainAll(Collection<?> collection)

删除数组映射中 存在于给定集合中的所有键。

V setValueAt(int index, V value)

将值设置为数组中的给定索引。

int size()

返回此数组映射中的项目数。

String toString()

返回对象的字符串表示形式。

该实现通过遍历其映射来组成一个字符串。

V valueAt(int index)

返回数组中给定索引的值。

Collection<V> values()

返回一个 Collection用于遍历数组映射中的所有值并与其交互。

Inherited methods

From class java.lang.Object
From interface java.util.Map

Public constructors

ArrayMap

Added in API level 19
ArrayMap ()

创建一个新的空ArrayMap。 数组映射的默认容量为0,并且一旦添加项目就会增加。

ArrayMap

Added in API level 19
ArrayMap (int capacity)

用给定的初始容量创建一个新的ArrayMap。

Parameters
capacity int

ArrayMap

Added in API level 23
ArrayMap (ArrayMap<K, V> map)

使用给定ArrayMap的映射创建一个新的ArrayMap。

Parameters
map ArrayMap

Public methods

clear

Added in API level 19
void clear ()

使数组映射为空。 所有存储都被释放。

containsAll

Added in API level 19
boolean containsAll (Collection<?> collection)

确定数组映射是否包含给定集合中的所有键。

Parameters
collection Collection: The collection whose contents are to be checked against.
Returns
boolean Returns true if this array map contains a key for every entry in collection, else returns false.

containsKey

Added in API level 19
boolean containsKey (Object key)

检查数组中是否存在密钥。

Parameters
key Object: The key to search for.
Returns
boolean Returns true if the key exists, else false.

containsValue

Added in API level 19
boolean containsValue (Object value)

检查数组中是否存在值。 这需要对整个阵列进行线性搜索。

Parameters
value Object: The value to search for.
Returns
boolean Returns true if the value exists, else false.

ensureCapacity

Added in API level 19
void ensureCapacity (int minimumCapacity)

确保数组映射至少可以容纳 minimumCapacity项目。

Parameters
minimumCapacity int

entrySet

Added in API level 19
Set<Entry<K, V>> entrySet ()

返回一个 Set用于遍历数组映射中的所有映射并与其进行交互。

注意:这是访问数组内容的非常低效的方式,它需要生成大量临时对象并分配与该容器关联的附加状态信息,这些信息将在容器的使用期限内保留。

注意:

the semantics of this Set are subtly different than that of a HashMap: most important, the Map.Entry object returned by its iterator is a single object that exists for the entire iterator, so you can not hold on to it after calling Iterator.next.

Returns
Set<Entry<K, V>> a set view of the mappings contained in this map

equals

Added in API level 19
boolean equals (Object object)

指示其他某个对象是否“等于”这一个。

equals方法在非空对象引用上实现等价关系:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values 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.
  • For any non-null reference value x, x.equals(null) should return false.

equals类的方法Object实现了对象上最可能的等价关系; 也就是说,对于任何非空参考值xy ,当且仅当xy引用同一对象( 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.

get

Added in API level 19
V get (Object key)

从数组中检索一个值。

Parameters
key Object: The key of the value to retrieve.
Returns
V Returns the value associated with the given key, or null if there is no such key.

hashCode

Added in API level 19
int hashCode ()

返回对象的哈希码值。 为了散列表的好处而支持此方法,例如由HashMap提供的HashMap

hashCode的总合同是:

  • 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 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.
  • If two objects are equal according to the equals(Object) method, then calling the hashCode 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(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.

indexOfKey

Added in API level 21
int indexOfKey (Object key)

返回集合中某个键的索引。

Parameters
key Object: The key to search for.
Returns
int Returns the index of the key if it exists, else a negative integer.

isEmpty

Added in API level 19
boolean isEmpty ()

如果数组映射不包含项目,则返回true。

Returns
boolean true if this map contains no key-value mappings

keyAt

Added in API level 19
K keyAt (int index)

返回数组中给定索引处的键。

Parameters
index int: The desired index, must be between 0 and size()-1.
Returns
K Returns the key stored at the given index.

keySet

Added in API level 19
Set<K> keySet ()

返回一个 Set迭代并与数组映射中的所有键进行交互。

注意:这是访问数组内容的一种相当低效的方式,它需要生成许多临时对象并分配与该容器关联的附加状态信息,这些信息将在容器的使用期限内保留。

Returns
Set<K> a set view of the keys contained in this map

put

Added in API level 19
V put (K key, 
                V value)

给数组映射添加一个新值。

Parameters
key K: The key under which to store the value. If this key already exists in the array, its value will be replaced.
value V: The value to store for the given key.
Returns
V Returns the old value that was stored for the given key, or null if there was no such key.

putAll

Added in API level 19
void putAll (ArrayMap<? extends K, ? extends V> array)

数组中执行所有键/值对的 put(Object, Object)

Parameters
array ArrayMap: The array whose contents are to be retrieved.

putAll

Added in API level 19
void putAll (Map<? extends K, ? extends V> map)

地图中执行所有键/值对的 put(Object, Object)

Parameters
map Map: The map whose contents are to be retrieved.

remove

Added in API level 19
V remove (Object key)

从阵列图中删除现有的键。

Parameters
key Object: The key of the mapping to remove.
Returns
V Returns the value that was stored under the key, or null if there was no such key.

removeAll

Added in API level 19
boolean removeAll (Collection<?> collection)

删除给定集合中存在的数组映射中的所有键。

Parameters
collection Collection: The collection whose contents are to be used to remove keys.
Returns
boolean Returns true if any keys were removed from the array map, else false.

removeAt

Added in API level 19
V removeAt (int index)

删除给定索引处的键/值映射。

Parameters
index int: The desired index, must be between 0 and size()-1.
Returns
V Returns the value that was stored at this index.

retainAll

Added in API level 19
boolean retainAll (Collection<?> collection)

删除数组映射中 存在于给定集合中的所有键。

Parameters
collection Collection: The collection whose contents are to be used to determine which keys to keep.
Returns
boolean Returns true if any keys were removed from the array map, else false.

setValueAt

Added in API level 19
V setValueAt (int index, 
                V value)

将值设置为数组中的给定索引。

Parameters
index int: The desired index, must be between 0 and size()-1.
value V: The new value to store at this index.
Returns
V Returns the previous value at the given index.

size

Added in API level 19
int size ()

返回此数组映射中的项目数。

Returns
int the number of key-value mappings in this map

toString

Added in API level 19
String toString ()

返回对象的字符串表示形式。 通常, toString方法将返回一个字符串,“文本地表示”该对象。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

ObjecttoString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”和对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

该实现通过遍历其映射来组成一个字符串。 如果此映射包含自身作为键或值,则字符串“(此映射)”将出现在它的位置。

Returns
String a string representation of the object.

valueAt

Added in API level 19
V valueAt (int index)

返回数组中给定索引的值。

Parameters
index int: The desired index, must be between 0 and size()-1.
Returns
V Returns the value stored at the given index.

values

Added in API level 19
Collection<V> values ()

返回一个 Collection迭代并与数组映射中的所有值进行交互。

注意:这是访问数组内容的一种相当低效的方式,它需要生成许多临时对象并分配与该容器关联的附加状态信息,这些信息将在容器的使用期限内保留。

Returns
Collection<V> a collection view of the values contained in this map

Hooray!