Collection
Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
---|---|---|---|---|
7 août 2024 | 1.4.3 | - | - | - |
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.
Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.
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:
- Remplacez les appels à
check()
etrequired()
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).
- Remplacez les appels à
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
etlinuxArm64
. (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
etScatterMap
- Cours avecMutableMap
et API de type carteMutableScatterSet
etScatterSet
- Cours avecMutableSet
et API de type définiMutableObjectList
etObjectList
- Cours avecMutableList
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
parListIterator
, ce qui pouvait entraîner un plantage en raison deIndexOutOfBoundsException
. (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, commeFloatFloatMap
. - Convertir les méthodes
removeIf
sur des collections primitives, telles queMutableFloatFloatMap
, en méthodes intégrées Cela garantit que le lambda deremoveIf
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
etScatterMap
- Cours avecMutableMap
et API de type carteMutableScatterSet
etScatterSet
- Cours avecMutableSet
et API de type définiMutableObjectList
etObjectList
- Cours avecMutableList
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 typeMutableList<Int|Float|Long>
. Le fichier[Int|Float|Long]List
en lecture seule existe également. Par exemple, les entiers peuvent être conservés dans unIntList
.Mutable[Int|Float|Long]Set
: classes avec une API de typeMutableSet<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 typeMutable<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 unIntObjectMap<T>
. Une carte comportant une clé longue et une valeur flottante est uneLongFloatMap
. Il n'existe aucune version nomméeObjectObjectMap
, car elle est couverte parScatterMap/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 afin 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 decollection:collection-ktx
au profit decollection:collection
, carcollection-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ésormaisMutableCollections
au lieu deAbstractMutableCollection
pour permettre une implémentation plus économe en mémoire detoArray
. (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
versandroidx.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
parArraySet
, 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?
parT
pour les appels suivants :ArraySet<T>.contains(null)
ArraySet<T>.add(null)
ArraySet<T>.remove(null)
- Remplacement du type renvoyé
T!
parT?
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()
: utilisezset.toTypedArray()
set.toArray(array)
: utilisezset.forEachIndexed(array::set)
- Remplacement du type d'argument
- 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 deSparseArrayCompat
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).
- Privatisation des API privées
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 plusnull
de manière erronée pour les appels non initialisés hors des limites desize()
, 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émentantentrySet().toArray()
,remove()
,removeAll()
etretainAll()
, 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émentantentrySet().toArray()
,remove()
,removeAll()
etretainAll()
, 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
etisNotEmpty
dans l'artefact "collection-ktx" (aosp/866529).
Modifications apportées à l'API
- Ajout de
putIfAbsent
àLongSparseArray
,SimpleArrayMap
etSparseArrayCompat
(aosp/772608). - Ajout de
getOrDefault
àSimpleArrayMap
(aosp/772607). - Ajout d'une méthode
remove
à deux arguments àLongSparseArray
,SimpleArrayMap
etSparseArrayCompat
. Abandon des extensions KTX de cette fonctionnalité (aosp/772482). - Ajout d'une méthode
replace
à deux arguments àLongSparseArray
,SimpleArrayMap
etSparseArrayCompat
(aosp/772483). - Ajout d'une méthode
replace
à trois arguments àLongSparseArray
,SimpleArrayMap
etSparseArrayCompat
(aosp/772484). - Abandon des méthodes
delete
redondantes. La méthoderemove
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 surSimpleArrayMap.class
plutôt que surArrayMap.class
. Ainsi, si vous n'utilisez queSimpleArrayMap
,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
etisNotEmpty
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 surSimpleArrayMap.class
plutôt que surArrayMap.class
. Ainsi, si vous n'utilisez queSimpleArrayMap
,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 surArraySet
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éthodesremove
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
etSparseArrayCompat
(aosp/772608). - Ajout de
getOrDefault
àSimpleArrayMap
(aosp/772607). - Ajout d'une méthode
remove
à deux arguments àLongSparseArray
,SimpleArrayMap
etSparseArrayCompat
. Abandon des extensions KTX de cette fonctionnalité (aosp/772482). - Ajout d'une méthode
replace
à deux arguments àLongSparseArray
,SimpleArrayMap
etSparseArrayCompat
(aosp/772483). - Ajout d'une méthode
replace
à trois arguments àLongSparseArray
,SimpleArrayMap
etSparseArrayCompat
(aosp/772484).