Looking for android Answers? Try Ask4KnowledgeBase
Looking for android Keywords? Try Ask4Keywords

AndroidComment utiliser SparseArray


Introduction

Un SparseArray est une alternative à une Map . Une Map nécessite que ses clés soient des objets. Le phénomène de la sélection automatique se produit lorsque nous voulons utiliser une valeur primitive int comme clé. Le compilateur convertit automatiquement les valeurs primitives en leurs types encadrés (par exemple int à Integer ). La différence de mémoire est notable: int utilise 4 octets, Integer utilise 16 octets. Un SparseArray utilise int comme valeur de clé.

Remarques

Avantage :

  • Moins d’utilisation de la mémoire (à cause des clés primitives).
  • Pas de boxe automatique.

Désavantage :

  • SparseArray utilise la recherche binaire pour trouver la valeur (O (log n)), donc ce n'est peut-être pas la meilleure solution si vous devez travailler avec un grand nombre d'éléments (utilisez HashMap).

Il existe plusieurs variantes de la famille comme: -SparseArray <Integer, Object> -SparseBooleanArray <Entier, Booléen> -SparseIntArray <Entier, Entier> -SparseLongArray <Entier, Long> -LongSparseArray <Long, Objet> -LongSparseLongArray <Long, Long >

Opérations SparseArray

  • Ajout de l'élément - put (int, x): Ajoute un mappage de la clé spécifiée à la valeur spécifiée, remplaçant le précédent mappage de la clé spécifiée s'il y en avait une. - append (int, x): place une paire clé / valeur dans le tableau, en optimisant le cas où la clé est supérieure à toutes les clés existantes du tableau. Vous devez utiliser append () en cas de clés séquentielles pour optimiser les performances. Sinon, put () va bien.

  • Élément remove - delete (int): Supprime le mappage de la clé spécifiée, le cas échéant. - removeAt (int): Supprime le mappage à l'index donné. - removeAtRange (int, int): Supprime une plage de mappages en tant que lot.

  • access element - get (int): Obtient l'int intéré à partir de la clé spécifiée, ou 0 si aucun mappage n'a été effectué. - get (int, E): Obtient l'int mappé depuis la clé spécifiée ou la valeur spécifiée si aucun mappage n'a été effectué. - valueAt (int): Étant donné un index compris dans la plage 0 ... size () - 1, renvoie la valeur du mappage valeur-clé indexth stocké par SparseIntArray. Les indices sont classés par ordre croissant.

  • index / key search - keyAt (int): Étant donné un index compris entre 0 et size (), renvoie la clé du mappage index-valeur indexée stocké par SparseIntArray. Les indices sont classés par ordre croissant. - valueAt (int): Étant donné un index compris dans la plage 0 ... size () - 1, renvoie la valeur du mappage valeur-clé indexth stocké par SparseIntArray. Les indices sont classés par ordre croissant. - indexOfKey (int): renvoie l'index pour lequel keyAt (int) renverrait la clé spécifiée ou un nombre négatif si la clé spécifiée n'est pas mappée. - indexOfValue (E): renvoie un index pour lequel valueAt (int) renverrait la clé spécifiée ou un nombre négatif si aucune clé ne correspond à la valeur spécifiée. Attention, il s'agit d'une recherche linéaire, contrairement aux recherches par clé, et que plusieurs clés peuvent être mappées à la même valeur et que celle-ci n'en trouvera qu'une. La différence de leur empreinte mémoire est notable: l’int utilise 4 octets, l’Integer utilise 16 octets.

Comment utiliser SparseArray Exemples Liés