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?

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 ()

  • ¿Es seguro pasar la instancia de una Actividad a otro objeto?
  • Android java, obtener más uso de memoria permitido
  • Android: ¿herramientas para encontrar fugas de memoria?
  • Uso de la memoria que sube en la aplicación PhoneGap
  • Obtenga memoria de proceso libre en android
  • Cómo encontrar fugas de memoria del código nativo en android
  • android Baja memoria: no más proceso de fondo ?? Necesitas ayuda
  • Problemas de memoria - fragmentos
  • Límite de tamaño de Android montón, todavía tenemos necesidad de diseñar aplicaciones con un límite de 16 MB en mente?
  • Android: obtiene la asignación de memoria USS de forma programática
  • Fuera de la memoria
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.