Collection

  
Réduisez l'impact sur la mémoire des collections nouvelles et existantes de petite taille.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
4 septembre 2024 1.4.3 - - 1.5.0-alpha01

Déclarer des dépendances

Pour ajouter une dépendance à Collection, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances des artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou module :

Groovy

dependencies {
    def collection_version = "1.4.3"
    implementation "androidx.collection:collection:$collection_version"
}

Kotlin

dependencies {
    val collection_version = "1.4.3"
    implementation("androidx.collection:collection:$collection_version")
}

Pour en savoir plus sur les dépendances, consultez la page Ajouter des dépendances de compilation.

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.

Version 1.5

Version 1.5.0-alpha01

4 septembre 2024

Publication d'androidx.collection:collection-*:1.5.0-alpha01. La version 1.5.0-alpha01 contient ces commits.

Modifications apportées à l'API

  • OrderedScatterSet est une nouvelle collection ordonnée et sans allocation. (Ic4178)
  • SieveCache est un nouveau remplacement sans allocation de LruCache, qui offre de meilleures caractéristiques de taux d'accès. (I50a17).
  • La représentation interne de packedValue a été exposée pour IntIntPair et FloatFloatPair. (Ifeb75, b/331853566).
  • Ajout de l'accès au tableau de contenu dans les collections de liste. (I899d5, b/333903173).
  • Ajout de DoubleList, une structure de données de type liste optimisée pour les valeurs Double. (Ia10d1, b/315127635).

Correction de bugs

  • La bibliothèque de collections se déplace vers Kotlin 1.9. (I0782f)
  • Optimisez de nombreuses collections pour améliorer leur efficacité. (Ic0566).

Version 1.4

Version 1.4.3

7 août 2024

Publication d'androidx.collection:collection-*:1.4.3. La version 1.4.3 contient ces commits.

Correction de bugs

  • Correction d'une corruption qui pouvait se produire dans ScatterMap, ScatterSet et leurs variantes primitives. (I38a4a, b/352560465).
  • Optimisation des performances. En particulier: <ph type="x-smartling-placeholder">
      </ph>
    • Remplacez les appels à check() et required() par des variantes qui ne génèrent pas d'exceptions intégrées. Cela réduit la taille binaire finale et, surtout, la pression du cache i-cache.
    • Amélioration de removeDeletedMarkers() dans le "dispersion" famille de collections. La nouvelle version efface les marqueurs supprimés huit marqueurs à la fois et annule les écritures plus coûteuses par la suite. (Ic0566).

Version 1.4.2

24 juillet 2024

Publication d'androidx.collection:collection-*:1.4.2. La version 1.4.2 contient ces commits.

Nouvelles fonctionnalités

  • Inclut des cibles de multiplateforme Kotlin supplémentaires: watchos, tvos et linuxArm64. (b/352543988).

Version 1.4.1

10 juillet 2024

Publication d'androidx.collection:collection-*:1.4.1. La version 1.4.1 contient ces commits.

Correction de bugs

  • Retirez les pierres tombales supprimées de la carte ou du jeu lors du redimensionnement. (7a996c5, b/345960092).

Version 1.4.0

24 janvier 2024

Publication d'androidx.collection:collection-*:1.4.0. Liste des commits de la version 1.4.0

Changements importants depuis la version 1.3.0

De nouvelles collections efficaces pour stocker des primitives sans boxing ont été ajoutées:

  • MutableScatterMap et ScatterMap - Cours avec MutableMap et API de type carte
  • MutableScatterSet et ScatterSet - Cours avec MutableSet et API de type défini
  • MutableObjectList et ObjectList - Cours avec MutableList et API de type liste

Par exemple, une carte avec une clé entière et une valeur de type de référence est un IntObjectMap<T>. Une carte comportant une clé longue et une valeur flottante est une LongFloatMap. Il n'existe aucune version nommée ObjectObjectMap, car elle est couverte par ScatterMap/MutableScatterMap.

Version 1.4.0-rc01

10 janvier 2024

Publication d'androidx.collection:collection-*:1.4.0-rc01 sans aucune modification. Liste des commits de la version 1.4.0-rc01

Version 1.4.0-beta02

29 novembre 2023

Publication d'androidx.collection:collection-*:1.4.0-beta02. Liste des commits de la version 1.4.0-beta02

Nouvelles fonctionnalités

  • Amélioration des performances de FloatFloatPair. (If5537).

Correction de bugs

  • L'itérateur ScatterMap.asMap() renvoie désormais de nouvelles instances. (I28932, b/310365754)

Version 1.4.0-beta01

15 novembre 2023

Publication d'androidx.collection:collection-*:1.4.0-beta01. Liste des commits de la version 1.4.0-beta01

Correction de bugs

  • Correction du problème de définition incorrecte des valeurs dans ObjectList par ListIterator, ce qui pouvait entraîner un plantage en raison de IndexOutOfBoundsException. (I3bd8a, b/307049391).

Version 1.4.0-alpha02

18 octobre 2023

Publication d'androidx.collection:collection-*:1.4.0-alpha02. Liste des commits de la version 1.4.0-alpha02

Modifications apportées à l'API

  • Ajout d'une surcharge pour put, qui renvoie la valeur précédente lorsqu'elle est remplacée dans toutes les collections primitives, comme FloatFloatMap.
  • Convertir les méthodes removeIf sur des collections primitives, telles que MutableFloatFloatMap, en méthodes intégrées Cela garantit que le lambda de removeIf n'est pas alloué.

Version 1.4.0-alpha01

4 octobre 2023

Publication d'androidx.collection:collection-*:1.4.0-alpha01. Liste des commits de la version 1.4.0-alpha01.

Nouvelles fonctionnalités

De nouvelles collections à haut rendement ont été ajoutées, avec de faibles coûts d'allocation et des performances élevées:

  • MutableScatterMap et ScatterMap - Cours avec MutableMap et API de type carte
  • MutableScatterSet et ScatterSet - Cours avec MutableSet et API de type défini
  • MutableObjectList et ObjectList - Cours avec MutableList et API de type liste

De nouvelles collections efficaces pour stocker des primitives sans boxing ont été ajoutées:

  • Mutable[Int|Float|Long]List : classes avec une API de type MutableList<Int|Float|Long>. Le fichier [Int|Float|Long]List en lecture seule existe également. Par exemple, les entiers peuvent être conservés dans un IntList.
  • Mutable[Int|Float|Long]Set : classes avec une API de type MutableSet<Int|Float|Long>. Le fichier [Int|Float|Long]Set en lecture seule existe également. Par exemple, les entiers peuvent être conservés dans un IntSet.
  • Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map : classes avec une API de type Mutable<Int|Float|Long,T, Int|Float|Long|T>. Le fichier [Int|Float|Long|Object][Int|Float|Long|Object]Map en lecture seule existe également. Par exemple, une carte avec une clé entière et une valeur de type de référence est un IntObjectMap<T>. Une carte comportant une clé longue et une valeur flottante est une LongFloatMap. Il n'existe aucune version nommée ObjectObjectMap, car elle est couverte par ScatterMap/MutableScatterMap.

Version 1.3.0

Version 1.3.0

4 octobre 2023

Publication d'androidx.collection:collection-*:1.3.0. Liste des commits de la version 1.3.0

Changements importants depuis la version 1.2.0

  • Vous pouvez désormais utiliser des collections dans les projets de multiplateforme Kotlin. Notez que les cibles des collections non-Android sont encore au stade expérimental. Toutefois, nous avons décidé de fusionner les versions pour que les développeurs puissent les essayer plus facilement.
  • L'ensemble du code source a été migré vers Kotlin. En raison de ce changement, de nombreuses API sont désormais correctement saisies pour les valeurs nulles et quelques membres privés de package sont devenus internal. Une liste des modifications exactes est disponible dans les notes de version mineures pour la version 1.3.x ci-dessous.
  • Parallèlement à la migration Kotlin, collection-ktx a été fusionné avec l'artefact de collection principal. Vous pouvez supprimer en toute sécurité toutes les dépendances de collection:collection-ktx au profit de collection:collection, car collection-ktx est désormais vide.

Version 1.3.0-rc01

6 septembre 2023

Publication d'androidx.collection:collection-*:1.3.0-rc01 sans aucune modification. Liste des commits de la version 1.3.0-rc01

Version 1.3.0-beta01

9 août 2023

Publication d'androidx.collection:collection-*:1.3.0-beta01. Liste des commits de la version 1.3.0-beta01

Version 1.3.0-alpha04

24 mars 2023

Publication d'androidx.collection:collection-*:1.3.0-alpha04.

Correction de bugs

  • Suppression des contraintes de dépendance des artefacts Maven pour contourner un problème de compilation dans les cibles natives Kotlin (b/274786186, KT-57531).

Version 1.3.0-alpha03

22 mars 2023

Publication d'androidx.collection:collection-*:1.3.0-alpha03. Liste des commits de la version 1.3.0-alpha03

Nouvelles fonctionnalités

  • Vous pouvez désormais utiliser des collections dans les projets KMM. Notez que les cibles des collections non-Android sont encore au stade expérimental, mais nous avons décidé de fusionner les versions afin que les développeurs puissent les essayer plus facilement.

Modifications apportées à l'API

  • ArraySet implémente désormais MutableCollections au lieu de AbstractMutableCollection pour permettre une implémentation plus économe en mémoire de toArray. (I1ac32)

Correction de bugs

  • ArraySet.toArray n'est désormais disponible que sur la JVM, car il n'a toujours été inclus que pour assurer la compatibilité avec Java. Les utilisateurs de Kotlin doivent généralement utiliser les assistants .toTypedArray de stdlib à la place, qui fournissent exactement la même fonctionnalité avec une sécurité du typage supplémentaire. (I2c59b).

Version 1.3.0-alpha02

27 juillet 2022

Publication d'androidx.collection:collection:1.3.0-alpha02 et d'androidx.collection:collection-ktx:1.3.0-alpha02. Liste des commits de la version 1.3.0-alpha02

Modifications apportées à l'API

  • Disponibilité de SparseArrayCompat pour les plates-formes autres que jvm à partir de l'artefact commun (Ic9bd0, b/219589118, b/228347315).
  • Disponibilité de CircularIntArray pour les plates-formes autres que jvm à partir de l'artefact commun (I3d8ef, b/228344943).
  • Disponibilité de LongSparseArray pour les plates-formes autres que jvm à partir de l'artefact commun (I73149, b/228347315).

Version 1.3.0-alpha01

29 juin 2022

Publication d'androidx.collection:collection:1.3.0-alpha01 et d'androidx.collection:collection-ktx:1.3.0-alpha01. Liste des commits de la version 1.3.0-alpha01.

Nouvelles fonctionnalités

  • Migration des extensions collection-ktx vers androidx.collection:collection, le principal artefact des collections. Ce changement rend les extensions -ktx préexistantes accessibles aux utilisateurs du Kotlin sans avoir besoin de la dépendance -ktx, tout en conservant la compatibilité pour les utilisateurs existants. Il n'est plus utile de conserver ces extensions dans un artefact -ktx distinct, car l'artefact principal a été déplacé vers Kotlin (I6eef2).

Modifications apportées à l'API

  • Extension d'AbstractMutableCollection par ArraySet, qui n'implémente plus directement l'interface Collection (If6da0, b/230860589).
  • Conversion d'ArraySet en Kotlin. En raison d'une rédaction plus stricte, il est possible que certains appels Kotlin ne soient plus compilés (Id68c1, b/230860589).
    • Remplacement du type d'argument T? par T pour les appels suivants :
      • ArraySet<T>.contains(null)
      • ArraySet<T>.add(null)
      • ArraySet<T>.remove(null)
    • Remplacement du type renvoyé T! par T? pour les appels suivants :
      • ArraySet<T?>.valueAt(n)
      • ArraySet<T?>.removeAt(n)
      • ArraySet<T?>().iterator().next()
    • Les appels suivants ne sont plus possibles à partir du Kotlin :
      • set.toArray() : utilisez set.toTypedArray()
      • set.toArray(array) : utilisez set.forEachIndexed(array::set)
  • Fusion du constructeur surchargé de SparseArrayCompat en tant qu'argument facultatif pour les utilisateurs du Kotlin (If8407, b/227474719).
  • Suppression de la syntaxe d'opérateur pour SparseArrayCompat.get(key, defaultValue).. Notez que la syntaxe d'opérateur pour .get(key) est toujours autorisée, mais la surface d'API de SparseArrayCompat correspond mieux aux autres classes de cette bibliothèque (I9a38d).
  • Migration des extensions LongSparseArray vers l'artefact principal, androidx.collection:collection. Ce changement rend les extensions -ktx préexistantes accessibles aux utilisateurs du Kotlin sans avoir besoin de la dépendance -ktx, tout en conservant la compatibilité pour les utilisateurs existants. Il n'est plus utile de conserver ces extensions dans un artefact -ktx distinct, car l'artefact principal a été déplacé vers Kotlin (I8659a).
  • Conversion de LongSparseArray en Kotlin. Cette modification ajoute une valeur nulle à ses types, le rendant ainsi compatible avec le binaire, mais cela peut entraîner des incompatibilités de source. Notamment, * .isEmpty n'est plus accessible en tant que propriété, mais en tant qu'appel de fonction en Kotlin : .isEmpty() (Idfd0f).
  • Conversion de SimpleArrayMap en Kotlin. Ce changement introduit quelques modifications incompatibles, résultant de l'interopérabilité de Java avec le Kotlin et de la possibilité de définir correctement la valeur nulle des types dans la source.
    • Privatisation des API privées .mSize, .mArray, .mHashes, .indexOf(), .indexOfNull() et .indexOfValue(). Techniquement, il s'agit d'une modification incompatible avec le binaire, mais elle reflète la visibilité prévue de ces champs et il n'est pas possible de s'en rapprocher davantage en Kotlin, qui ne permet pas de spécifier une visibilité privée pour le paquet.
    • Correction de la valeur nulle de certains types pour les méthodes .getOrDefault, .keyAt, .valueAt, .setValueAt, .put, .putIfAbsent, .removeAt et .replace.
    • Pour les utilisateurs de Kotlin, .isEmpty() n'est désormais disponible qu'en tant que fonction plutôt que via l'accès à la propriété (I271b7, b/182813986).
  • Conversion de CircularArray en Kotlin. Changements notables :

    • Correction et remplacement de la valeur nulle de ses valeurs génériques par une valeur non nulle, qui était auparavant impossible à déclarer, mais qui était appliquée dans toutes ses API publiques.
    • En raison de l'interopérabilité de Java avec le Kotlin, il était auparavant possible d'accéder à certaines méthodes à la fois en tant que propriétés ou fonctions. Cependant, pour réduire la duplication tout en conservant la compatibilité binaire, il était nécessaire de les supprimer, ce qui n'est pas compatible avec la source. Les appels concernés sont : .isEmpty, .getLast() et .getFirst() (Ifffac).
  • Conversion de CircularIntArray en Kotlin. En raison de l'interopérabilité de Java avec le Kotlin, il était auparavant possible d'accéder à certaines méthodes à la fois en tant que propriétés ou fonctions. Cependant, pour réduire la duplication tout en conservant la compatibilité binaire, il était nécessaire de les supprimer, ce qui n'est pas compatible avec la source. Les appels concernés sont : .isEmpty, .getLast() et .getFirst() (Ie36ce).

  • Conversion de LruCache en Kotlin (Ia2f19).

  • Conversion de SparseArrayCompat en Kotlin (If6fe8).

    Le comportement de SparseArrayCompat.valueAt() a été légèrement modifié. Il ne renvoie plus null de manière erronée pour les appels non initialisés hors des limites de size(), mais dans la capacité initiale fournie.

    Cette modification introduit également une valeur nulle pour certains types précédemment manquants.

    • .get(): E? -> .get(): E
    • .replace(Int, Int?): Int? -> .replace(Int, Int): Int?
    • .replace(Int, Int?, Int?): Boolean -> .replace(Int, Int, Int): Boolean
    • .put(Int, Int?) -> .put(Int, Int)
    • .putIfAbsent(Int, Int?): Int? -> .putIfAbsent(Int, Int): Int?
    • .setValueAt(index: Int, value: Int?) -> .setValueAt(index: Int, value: Int)
    • .indexOfValue(value: Int?): Int -> .indexOfValue(value: Int): Int
    • .containsValue(value: Int?): Boolean -> .containsValue(value: Int): Boolean
    • .append(key: Int, value: Int?) -> .append(key: Int, value: Int)

Version 1.2.0

Version 1.2.0

1er décembre 2021

Publication d'androidx.collection:collection:1.2.0 et d'androidx.collection:collection-ktx:1.2.0. Liste des commits de la version 1.2.0

Changements importants depuis la version 1.1.0

  • Ajout d'un constructeur de tableau à ArraySet (Id7f19).
  • Mise en conformité avec l'API d'entrySet() en implémentant entrySet().toArray(), remove(), removeAll() et retainAll(), et en supprimant l'implémentation d'entrySet().addAll() (I5d505).

Version 1.2.0-rc01

17 novembre 2021

Publication d'androidx.collection:collection:1.2.0-rc01 et d'androidx.collection:collection-ktx:1.2.0-rc01. Liste des commits de la version 1.2.0-rc01.

Modifications apportées à l'API

  • Aucun changement par rapport à la version bêta précédente.

Version 1.2.0-beta01

13 octobre 2021

Publication d'androidx.collection:collection:1.2.0-beta01 et d'androidx.collection:collection-ktx:1.2.0-beta01. Liste des commits de la version 1.2.0-beta01

Corrections de bugs

  • Mise en conformité avec l'API d'entrySet() en implémentant entrySet().toArray(), remove(), removeAll() et retainAll(), et en supprimant l'implémentation d'entrySet().addAll() (I5d505).

Version 1.2.0-alpha01

16 décembre 2020

Publication d'androidx.collection:collection:1.2.0-alpha01 et d'androidx.collection:collection-ktx:1.2.0-alpha01. Liste des commits de la version 1.2.0-alpha01

Modifications apportées à l'API

  • Ajout d'un constructeur de tableau à ArraySet (Id7f19).

Version 1.1.0

Version 1.1.0

5 juin 2019

Publication d'androidx.collection:collection:1.1.0 et d'androidx.collection:collection-ktx:1.1.0. Pour consulter les commits de la version 1.1.0, cliquez ici.

Vous trouverez ci-dessous un récapitulatif des différences entre la version 1.0.0 et la version 1.1.0 :

Nouvelles fonctionnalités

  • Implémentation plus efficace pour les fonctions contains et isNotEmpty dans l'artefact "collection-ktx" (aosp/866529).

Modifications apportées à l'API

  • Ajout de putIfAbsent à LongSparseArray, SimpleArrayMap et SparseArrayCompat (aosp/772608).
  • Ajout de getOrDefault à SimpleArrayMap (aosp/772607).
  • Ajout d'une méthode remove à deux arguments à LongSparseArray, SimpleArrayMap et SparseArrayCompat. Abandon des extensions KTX de cette fonctionnalité (aosp/772482).
  • Ajout d'une méthode replace à deux arguments à LongSparseArray, SimpleArrayMap et SparseArrayCompat (aosp/772483).
  • Ajout d'une méthode replace à trois arguments à LongSparseArray, SimpleArrayMap et SparseArrayCompat (aosp/772484).
  • Abandon des méthodes delete redondantes. La méthode remove offre la même API et les mêmes fonctionnalités que l'API utilisée par les Maps non spécialisées (aosp/866053).

Corrections de bugs

  • Modification de SimpleArrayMap pour synchroniser son cache global interne de tableaux sur SimpleArrayMap.class plutôt que sur ArrayMap.class. Ainsi, si vous n'utilisez que SimpleArrayMap, ArrayMap peut être supprimé à l'aide d'outils de minification du code (aosp/934557).

Version 1.1.0-rc01

7 mai 2019

Publication d'androidx.collection:collection:1.1.0-rc01 et d'androidx.collection:collection-ktx:1.1.0-rc01. Les commits inclus dans cette version sont disponibles sur cette page.

Nouvelles fonctionnalités

  • Implémentation plus efficace pour les fonctions contains et isNotEmpty dans l'artefact "collection-ktx" (aosp/866529).

Version 1.1.0-beta01

3 avril 2019

Publication d'androidx.collection:collection:1.1.0-beta01 et d'androidx.collection:collection-ktx:1.1.0-beta01. Les commits inclus dans cette version sont disponibles sur cette page.

Modifications apportées à l'API

  • Suppression de la méthode mentionnée dans les notes de version alpha03 indiquant la modification de sa valeur @RestrictTo. Elle n'était utilisée par aucune bibliothèque AndroidX (actuellement ou par le passé) et ne proposait aucune fonctionnalité qui manquait dans l'API publique.

Corrections de bugs

  • Modification de SimpleArrayMap pour synchroniser son cache global interne de tableaux sur SimpleArrayMap.class plutôt que sur ArrayMap.class. Ainsi, si vous n'utilisez que SimpleArrayMap, ArrayMap peut être supprimé à l'aide d'outils de minification du code (aosp/934557).

Version 1.1.0-alpha03

13 mars 2019

Publication d'androidx.collection:collection:1.0.0-alpha03 et d'androidx.collection:collection-ktx:1.0.0-alpha03. La liste complète des commits inclus dans cette version est disponible sur cette page.

Modifications apportées à l'API

  • Remplacement du marquage @RestrictTo(LIBRARY_GROUP) d'une méthode sur ArraySet par @RestrictTo(LIBRARY_GROUP_PREFIX) pour prendre en charge l'utilisation historique par d'autres bibliothèques AndroidX se trouvant désormais dans des ID de groupe Maven différents. Cette méthode sera soit rendue publique, soit supprimée dans la version 1.1.0-alpha04, car les autres bibliothèques AndroidX ne doivent pas obtenir des API spéciales auxquelles d'autres développeurs n'ont pas accès.

Version 1.1.0-alpha02

30 janvier 2019

Publication d'androidx.collection:collection 1.1.0-alpha02 et d'androidx.collection:collection-ktx 1.1.0-alpha02.

Modifications apportées à l'API

  • Abandon des méthodes delete redondantes. Les méthodes remove offrent la même API et les mêmes fonctionnalités, et correspondent à l'API utilisée par les Maps non spécialisées (aosp/866053).

Version 1.1.0-alpha01

3 décembre 2018

Modifications apportées à l'API

  • Ajout de putIfAbsent à LongSparseArray, SimpleArrayMap et SparseArrayCompat (aosp/772608).
  • Ajout de getOrDefault à SimpleArrayMap (aosp/772607).
  • Ajout d'une méthode remove à deux arguments à LongSparseArray, SimpleArrayMap et SparseArrayCompat. Abandon des extensions KTX de cette fonctionnalité (aosp/772482).
  • Ajout d'une méthode replace à deux arguments à LongSparseArray, SimpleArrayMap et SparseArrayCompat (aosp/772483).
  • Ajout d'une méthode replace à trois arguments à LongSparseArray, SimpleArrayMap et SparseArrayCompat (aosp/772484).