Android Desarrollo Diecisiete: una colección de SparseArray, ArrayMap detallada

prefacio


Como una desarrolladores Anndroid, lenguaje Java que utilizamos cuando en la mayoría de los casos, natural en el tratamiento de algunos de los sistemas de recogida de datos es el uso de Java, como HashMap, HashSet, etc., pero se puede saber, Android, debido a su necesidades especiales, sino también personalizar sus necesidades en las clases de colección "exclusivos", consulte el documento oficial, bajo android.util bolsa, la captura de un total de varias categorías de la siguiente manera: serie SparseArray (SparseArray, SparseBooleanArray, SparseIntArray, SparseLongArray, LongSparseArray), y ArrayMap, ArraySet, creo que incluso si nunca aprendió, ver estos nombres de clases, básicamente habría adivinado algunos de sus diferencias y uso, y aquí llegamos a una buena escuela para aprender de ellos, comience!

directorio


1. Uso 
2. sentir la belleza del diseño 
3. Ventajas y desventajas y escenarios de aplicación

texto


Utilizar
según mi costumbre, creo que no importa lo que la escuela, la primera necesidad es el uso de "ella" siente que es el uso, seguido con el fin de hablar de cosas en teoría, vamos a aprender cómo utilizar. 
En primer lugar nos fijamos en el uso de SparseArray

       

 //声明
        SparseArray<String> sparseArray= new SparseArray<>();
        //增加元素,append方式
        sparseArray.append(0, "myValue");
        //增加元素,put方式
        sparseArray.put(1, "myValue");
        //删除元素,二者等同
        sparseArray.remove(1);
        sparseArray.delete(1);
        //修改元素,put或者append相同的key值即可
        sparseArray.put(1,"newValue");
        sparseArray.append(1,"newValue");
        //查找,遍历方式1
        for(int i=0;i<sparseArray.size();i++){
            Log.d(TAG,sparseArray.valueAt(i));
        }
        //查找,遍历方式2
        for(int i=0;i<sparseArray.size();i++){
            int key = sparseArray.keyAt(i);
            Log.d(TAG,sparseArray.get(key));
        }


El OK, el uso normal, y otras estructuras de datos Hashmap sustancialmente la misma. 
La única diferencia es el tipo de clave y valor, Hashmap el valor de la clave y el argumento valor es genérico, pero sólo los valores clave SparseArray de tipo int, el argumento valor de tipo de objeto, al ver esto, puede que le resulte muy extraño que no por un gran número de limitaciones en el uso Bueno, la importancia de tales limitaciones no?

Antes de hacerlo, echar un vistazo al resto de los hermanos gemelos SparseArray y hermanas, y LongSparseArray SparseArray comparados, la única diferencia es el valor de la clave es larga, por lo que, desde siempre, entonces el SparseArray relativa, que puede almacenar los elementos de datos los más de SparseArray.

Dicho sea de paso de actualización, int el rango de -2 ^ 31 a 2 ^ 31-1, y largo -2 ^ 63 a 2 ^ 63-1

Entonces se convierten los valores SparseArray SparseBooleanArray, SparseIntArray, SparseLongArray, tres valor hermanos está relativamente hablando se determinan, SparseBooleanArray valor del tipo booleano fijo, SparseIntArray fija valor de tipo int, el valor SparseLongArray de tipo fijo de largo.

Tenga en cuenta que el valor del tipo de valor boolean, int, long se escriben en minúscula, se refiere a un tipo básico, tipo de paquete en lugar de

Un resumen breve de lo que sigue

SparseArray          <int, Object>
LongSparseArray      <long, Object>
SparseBooleanArray   <int, boolean>
SparseIntArray       <int, int>
SparseLongArray      <int, long>



ok, entonces vamos a ver el uso de ArrayMap y ArraySet

       

ArrayMap<String,String> map=new ArrayMap<>();
        //增加
        map.put("xixi","haha");
        //删除
        map.remove("xixi");
        //修改,put相同的key值即可
        map.put("xixi2","haha");
        map.put("xixi2","haha2");
        //查找,通过key来遍历
        for(String key:map.keySet()){
            Log.d(TAG,map.get(key));
        }


OK, el uso normal, y HashMap no es diferente. ArraySet que no iba a continuar decirlo, su relación es como como HashMap y HashSet, y es la misma HashSet no puede almacenar elementos.

Adicional explicar, el uso ArraySet requiere una versión mínima SDK 23, que es valor minSdkVersion debe ser mayor que o igual 23

Publicados 377 artículos originales · ganado elogios 145 · vistas 210 000 +

Supongo que te gusta

Origin blog.csdn.net/Windgs_YF/article/details/104298890
Recomendado
Clasificación