Most visited

Recently visited

LongSparseArray

public class LongSparseArray
extends Object implements Cloneable

java.lang.Object
   ↳ android.support.v4.util.LongSparseArray<E>


SparseArray映射可以延伸到对象,平台的一个版本LongSparseArray可以在旧版本的平台上使用。 与普通的对象数组不同,索引中可能存在空白。 它的目的是比使用HashMap将Longs映射到Objects更高的内存效率,因为它避免了自动装箱键,并且其数据结构不依赖每个映射的额外入口对象。

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

为了提高性能,容器在删除键时包含一个优化:不是立即压缩其数组,而是将删除的条目标记为已删除。 然后可以将该条目重新用于相同的密钥,或稍后在所有移除的条目的单个垃圾收集步骤中进行压缩。 这个垃圾收集需要随时生成数组或者检索地图大小或条目值。

Summary

Public constructors

LongSparseArray()

创建一个不包含映射的新LongSparseArray。

LongSparseArray(int initialCapacity)

创建一个不包含映射的新LongSparseArray,这些映射不需要任何额外的内存分配来存储指定数量的映射。

Public methods

void append(long key, E value)

将键/值对放入数组中,针对键大于数组中所有现有键的情况进行优化。

void clear()

从此LongSparseArray中删除所有键值映射。

LongSparseArray<E> clone()

创建并返回此对象的副本。

void delete(long key)

如果有指定的键,则删除指定键的映射。

E get(long key)

获取从指定键映射的对象,或者如果没有这样的映射,则获取 null

E get(long key, E valueIfKeyNotFound)

获取从指定键映射的Object或指定的Object,如果没有这样的映射。

int indexOfKey(long key)

返回 keyAt(int)将返回指定键的索引;如果指定的键未映射,则返回负数。

int indexOfValue(E value)

返回 valueAt(int)将返回指定键的索引;如果没有键映射到指定值,则返回负数。

long keyAt(int index)

给定一个范围为 0...size()-1的索引,从 indexindex个键值映射中返回键。

void put(long key, E value)

添加从指定键到指定值的映射,如果有指定键,则从指定键替换以前的映射。

void remove(long key)

别名为 delete(long)

void removeAt(int index)

删除指定索引处的映射。

void setValueAt(int index, E value)

给定范围 0...size()-1的索引,为此LongSparseArray存储的 index th键值映射设置一个新值。

int size()

返回此LongSparseArray当前存储的键值映射的数量。

String toString()

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

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

E valueAt(int index)

给定一个范围为 0...size()-1的索引,返回此LongSparseArray存储的第 index个键值映射的值。

Inherited methods

From class java.lang.Object

Public constructors

LongSparseArray

LongSparseArray ()

创建一个不包含映射的新LongSparseArray。

LongSparseArray

LongSparseArray (int initialCapacity)

创建一个不包含映射的新LongSparseArray,这些映射不需要任何额外的内存分配来存储指定数量的映射。 如果您提供的初始容量为0,则稀疏数组将使用轻量级表示进行初始化,而不需要任何额外的数组分配。

Parameters
initialCapacity int

Public methods

append

void append (long key, 
                E value)

将键/值对放入数组中,针对键大于数组中所有现有键的情况进行优化。

Parameters
key long
value E

clear

void clear ()

从此LongSparseArray中删除所有键值映射。

clone

LongSparseArray<E> clone ()

创建并返回此对象的副本。 “复制”的确切含义可能取决于对象的类别。 一般意图是,对于任何对象x ,表达式:

 x.clone() != x
will be true, and that the expression:
 x.clone().getClass() == x.getClass()
will be true, but these are not absolute requirements. While it is typically the case that:
 x.clone().equals(x)
will be true, this is not an absolute requirement.

按照惯例,返回的对象应该通过调用super.clone获得。 如果一个类和它的所有超类( Object除外)都遵守这个约定,那么情况就是x.clone().getClass() == x.getClass()

按照惯例,这个方法返回的对象应该独立于这个对象(被克隆)。 为了实现这种独立性,可能需要在返回super.clone之前修改对象的一个或多个字段。 通常,这意味着复制包含被克隆对象的内部“深层结构”的任何可变对象,并将这些对象的引用替换为对这些副本的引用。 如果一个类只包含原始字段或对不可变对象的引用,那么通常情况下不需要修改super.clone返回的对象中的字段。

Object的方法clone执行特定的克隆操作。 首先,如果该对象的类没有实现接口Cloneable ,则引发CloneNotSupportedException 请注意,所有数组都被认为实现了接口Cloneable ,数组类型T[]clone方法的返回类型为T[] ,其中T是任何引用或基本类型。 否则,此方法创建该对象的类的新实例,并使用该对象的相应字段的内容来初始化其所有字段,就像通过赋值一样; 这些字段的内容本身并不克隆。 因此,此方法执行此对象的“浅拷贝”,而不是“深拷贝”操作。

Object本身并不实现接口 Cloneable ,所以在类为 Object的对象上调用 clone方法将导致在运行时抛出异常。

Returns
LongSparseArray<E> a clone of this instance.

delete

void delete (long key)

如果有指定的键,则删除指定键的映射。

Parameters
key long

get

E get (long key)

获取从指定键映射的对象,或者如果没有这样的映射,则获取 null

Parameters
key long
Returns
E

get

E get (long key, 
                E valueIfKeyNotFound)

获取从指定键映射的Object或指定的Object,如果没有这样的映射。

Parameters
key long
valueIfKeyNotFound E
Returns
E

indexOfKey

int indexOfKey (long key)

返回 keyAt(int)将返回指定键的索引;如果指定的键未映射,则返回负数。

Parameters
key long
Returns
int

indexOfValue

int indexOfValue (E value)

返回valueAt(int)将返回指定键的索引;如果没有键映射到指定值,则返回负数。 请注意,这是一种线性搜索,与按键查找不同,并且多个键可以映射到相同的值,而这只会查找其中的一个。

Parameters
value E
Returns
int

keyAt

long keyAt (int index)

给定一个范围为 0...size()-1的索引,从 indexindex个键值映射中返回键。

Parameters
index int
Returns
long

put

void put (long key, 
                E value)

添加从指定键到指定值的映射,如果有指定键,则从指定键替换以前的映射。

Parameters
key long
value E

remove

void remove (long key)

别名为 delete(long)

Parameters
key long

removeAt

void removeAt (int index)

删除指定索引处的映射。

Parameters
index int

setValueAt

void setValueAt (int index, 
                E value)

给定一个范围为 0...size()-1的索引,为此LongSparseArray存储的第 index个键值映射设置一个新值。

Parameters
index int
value E

size

int size ()

返回此LongSparseArray当前存储的键值映射的数量。

Returns
int

toString

String toString ()

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

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

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

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

Returns
String a string representation of the object.

valueAt

E valueAt (int index)

给定范围 0...size()-1的索引,返回此LongSparseArray存储的 index键值映射中的值。

Parameters
index int
Returns
E

Hooray!