Android SparseArray con la clave de cadena?
Necesito usar un hashmap para almacenar valores / claves en mi aplicación para Android (potencialmente miles), pero entiendo que debo usar SparseArray para ahorrar memoria. Sin embargo, mi llave necesita ser una cuerda. ¿Hay una manera de crear una implementación personalizada de la SparseArray o alguna otra alternativa?
- ¿Cómo analizar el comportamiento de Dalvik GC?
- Android: pre y post-HONEYCOMB montón de uso debido a los mapas de bits?
- Almacenamiento de datos de aplicaciones de Android en la tarjeta SD
- Cómo borrar la memoria inactiva en Android mediante programación?
- Tamaño de una aplicación Android de Hello World
- Tamaño máximo de montón nativo en Android?
- ¿Cómo gestiona la memoria Android?
- Bitmap recycle () en java Android
- Android - Cómo obtener el uso de memoria de mi dispositivo Android
- Supervisar la memoria ocupada por mi aplicación en Android
- Android: fugas de memoria al crear dinámicamente UI con fondos de recursos de imagen
- Máxima memoria nativa que se puede asignar a una aplicación para Android
- Simulación de memoria en android
SparseArray es sólo una cosa cuando los números enteros son la clave. Es una optimización de la memoria que sólo es posible con valores enteros, ya que es necesario buscar las claves binarias. Las búsquedas binarias en cadenas son caras y no están bien definidas (¿debería ser '1' menor o mayor que 'a' o 'carácter japonés loco'?), Por lo que no lo hacen.
BTW, SparseArray guarda la memoria pero puede tomar más tiempo. Un get en un HashMap debe ser O (n / size) donde size es el número de cubos en el hashmap. SparseArray va a ser O (log (n)). Cuál utilizar depende de la memoria y de la velocidad que usted necesita. Si usted tiene una verdadera gran (100Ks de entradas) que incluso se ejecutará en problemas de paginación de memoria donde las realidades físicas de caché falla puede causar más HashMap para realizar mejor, incluso si su técnicamente peor, ya que tendrá un máximo de 1 caché Miss per get, mientras que una búsqueda binaria puede tener múltiples.
Puede utilizar ArrayMap : ArrayMap es una estructura genérica de datos de mapeo de clave-> valor que está diseñada para ser más eficiente en la memoria que un HashMap tradicional
Para más información: ArrayMap Doc
SparseArray
es una clase especializada para mapas que tienen números enteros como el tipo de clave. Básicamente utilizan ese hecho para guardar el valor int en lugar de una referencia a un objeto Integer (de ahí el ahorro de memoria).
No hay nada inherentemente malo con el uso de un HashMap
estándar cuando la clave es de cualquier otro tipo.
Puede utilizar el hashCode de la cadena -> mystring.hashCode ()
- Android mediaPlayer – ¿hay un método "isPrepared ()" o "getStatus ()"?
- PopupWindow fuera de la pantalla cuando el tamaño no se especifica