Android SparseArray mit String Schlüssel?

Ich muss eine Hasmama verwenden, um Schlüssel / Werte in meiner Android-App zu speichern (möglicherweise Tausende), aber ich verstehe, dass ich SparseArray verwenden sollte, um Speicher zu sparen. Allerdings muss mein Schlüssel ein String sein. Gibt es einen Weg, um eine benutzerdefinierte Umsetzung der SparseArray oder eine andere Alternative zu schaffen?

  • Android.support.v4.app.Fragment.setUserVisibleHint null Zeiger auf App wieder aufnehmen
  • Port CGAffineTransform von iOS zu Android
  • Android & (Millionen von) Push-Benachrichtigungen
  • Wie komme ich zur Befehlszeile in Eclipse
  • Kontextdarsteller kann nicht in die Tätigkeit geworfen werden
  • OnServiceDisconnected () wird nach dem Aufruf von service stopSelf nicht aufgerufen ()
  • Android - FAB zu verstecken, wenn zwischen verschiedenen Fragmenten in einem Viewpager navigieren
  • INSTALL_FAILED_ALREADY_EXISTS beim Versuch, APK-Paket zu installieren
  • Logging und Crash Stack Traces nicht in Android Studio zeigen
  • Android change language listener
  • Android - Hinzufügen einer externen Bibliothek zum Projektieren
  • Kann ich den Routingtabelleneintrag in Android erhalten?
  • 4 Solutions collect form web for “Android SparseArray mit String Schlüssel?”

    SparseArray ist nur eine Sache, wenn Integer der Schlüssel sind. Es ist eine Speicheroptimierung, die nur mit ganzzahligen Werten möglich ist, weil man die Binärsuche durchsucht. Binäre Suchen auf Saiten sind teuer und nicht gut definiert (sollte '1' kleiner oder größer als 'a' oder 'verrücktes japanisches Zeichen' sein?), Also machen sie es nicht.

    BTW, SparseArray spart Speicher, kann aber mehr Zeit in Anspruch nehmen. A auf eine HashMap sollte O (n / size) wo Größe ist die Anzahl der Eimer in der hashmap. SparseArray wird O (log (n)) sein. Was zu verwenden ist, hängt von Gedächtnis und Geschwindigkeit ab, die Sie benötigen. Wenn Sie eine wirklich große (100Ks von Einträgen) haben, werden Sie sogar in Speicher-Paging-Probleme laufen, wo die physikalischen Realitäten von Cache-Fehlern dazu führen können, dass die mehr HashMap besser funktioniert, auch wenn es technisch schlechter ist, denn es wird ein Maximum von 1 Cache haben Miss per get, während eine binäre Suche mehrere haben kann.

    Sie können ArrayMap verwenden : ArrayMap ist eine generische Schlüssel-> Wertzuordnungsdatenstruktur, die mehr Speicher effizienter als eine traditionelle HashMap ist

    Für weitere Informationen: ArrayMap Doc

    SparseArray ist eine spezialisierte Klasse für Karten mit Ganzzahlen als Schlüsselart. Sie verwenden diese Tatsache grundsätzlich, um den int-Wert anstelle eines Verweises auf ein Integer-Objekt zu speichern (also die Speichereinsparungen).

    Es ist nichts inhärent falsch mit der Verwendung eines Standard- HashMap wenn die Taste von einem anderen Typ ist.

    Du kannst den hashCode von string verwenden -> mystring.hashCode ()

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.