Collection
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
27 de julio de 2022 | 1.2.0 | - | - | 1.3.0-alpha02 |
Cómo declarar dependencias
Para agregar una dependencia en Collection, debes agregar el repositorio Maven de Google a tu proyecto. Consulta el repositorio Maven de Google para obtener más información.
Agrega las dependencias de los artefactos que necesites en el archivo build.gradle
de tu app o módulo:
Groovy
dependencies { def collection_version = "1.2.0" // Java language implementation implementation "androidx.collection:collection:$collection_version" // Kotlin implementation "androidx.collection:collection-ktx:$collection_version" }
Kotlin
dependencies { val collection_version = "1.2.0" // Java language implementation implementation("androidx.collection:collection:$collection_version") // Kotlin implementation("androidx.collection:collection-ktx:$collection_version") }
Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.
Comentarios
Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes en esta biblioteca antes de crear uno nuevo. Para agregar tu voto a un error existente, haz clic en el botón de la estrella.
Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.
Versión 1.3.0
Versión 1.3.0-alpha02
27 de julio de 2022
Lanzamiento de androidx.collection:collection:1.3.0-alpha02
y androidx.collection:collection-ktx:1.3.0-alpha02
. La versión 1.3.0-alpha02 contiene estas confirmaciones.
Cambios en la API
SparseArrayCompat
ahora está disponible para plataformas que no son jvm desde el artefacto común (Ic9bd0, b/219589118, b/228347315).CircularIntArray
ahora está disponible para plataformas que no son jvm desde el artefacto común (I3d8ef, b/228344943).LongSparseArray
ahora está disponible para plataformas que no son jvm desde el artefacto común (I73149, b/228347315).
Versión 1.3.0-alpha01
29 de junio de 2022
Lanzamiento de androidx.collection:collection:1.3.0-alpha01
y androidx.collection:collection-ktx:1.3.0-alpha01
. La versión 1.3.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
- Se migraron las extensiones
collection-ktx
al artefacto de colecciones principal,androidx.collection:collection
. Este cambio permite que los usuarios de Kotlin puedan acceder a las extensiones -ktx preexistentes sin necesidad de usar la dependencia -ktx, a la vez que mantienen la compatibilidad con los usuarios existentes. No se recomienda mantener estas extensiones en un artefacto -ktx separado porque el artefacto principal se trasladó a Kotlin (I6eef2).
Cambios en la API
ArraySet
ahora extiendeAbstractMutableCollection
y ya no implementa directamente la interfaz Collection (If6da0, b/230860589).- Se convirtió
ArraySet
a Kotlin. Debido a una escritura más estricta, es posible que algunas llamadas a Kotlin ya no se compilen (Id68c1, b/230860589).- Las siguientes llamadas tienen el tipo de argumento
T
, noT?
:ArraySet<T>.contains(null)
ArraySet<T>.add(null)
ArraySet<T>.remove(null)
- Las siguientes llamadas tienen el tipo de datos que se muestra
T?
, noT!
:ArraySet<T?>.valueAt(n)
ArraySet<T?>.removeAt(n)
ArraySet<T?>().iterator().next()
- Las siguientes llamadas ya no son posibles desde Kotlin:
set.toArray()
: usaset.toTypedArray()
.set.toArray(array)
: usaset.forEachIndexed(array::set)
.
- Las siguientes llamadas tienen el tipo de argumento
- Se combinó el constructor sobrecargado de
SparseArrayCompat
como argumento opcional para los usuarios de Kotlin (If8407, b/227474719). - Se quitó la sintaxis del operador para
SparseArrayCompat.get(key, defaultValue).
. Ten en cuenta que esto sigue permitiendo la sintaxis del operador para.get(key)
, pero alinea mejor la superficie de la API deSparseArrayCompat
con las otras clases de esta biblioteca (I9a38d). - Se migraron las extensiones
LongSparseArray
al artefacto principal de androidx.collection:collection. Este cambio permite que los usuarios de Kotlin puedan acceder a las extensiones -ktx preexistentes sin necesidad de usar la dependencia -ktx, a la vez que mantienen la compatibilidad con los usuarios existentes. No se recomienda mantener estas extensiones en un artefacto -ktx separado porque el artefacto principal se trasladó a Kotlin (I8659a). - Se convirtió
LongSparseArray
en Kotlin. Este cambio agrega nulabilidad explícita a sus tipos, que es un cambio compatible con objetos binarios, pero puede causar incompatibilidades de origen. En particular: Ya no se puede acceder a *.isEmpty
como una propiedad; se debe acceder como una llamada a función en Kotlin -.isEmpty()
(Idfd0f). - Se convirtió
SimpleArrayMap
en Kotlin. Esta modificación introduce algunos cambios incompatibles como resultado de la interoperabilidad de Java-Kotlin y la capacidad de definir correctamente la nulidad de los tipos en el origen.- Las APIs privadas de paquetes (
.mSize
,.mArray
,.mHashes
,.indexOf()
,.indexOfNull()
y.indexOfValue()
) se hicieron privadas. Técnicamente, es un cambio binario incompatible, pero refleja la visibilidad prevista de estos campos y es lo más cercano que podemos lograr en Kotlin, ya que no incluye una manera de especificar la visibilidad privada del paquete. - La nulidad de algunos tipos ahora está definida correctamente; los métodos afectados son
.getOrDefault
,.keyAt
,.valueAt
,.setValueAt
,.put
,.putIfAbsent
,.removeAt
y.replace
. - Para los usuarios de Kotlin,
.isEmpty()
ahora solo está disponible como función en lugar de acceso a la propiedad (I271b7, b/182813986).
- Las APIs privadas de paquetes (
Se convirtió
CircularArray
en Kotlin. Cambios importantes:- Se corrigió la nulidad de sus genéricos para que no sean nulos, que antes era imposible de declarar, pero se aplicaba en todas sus APIs públicas.
- Debido a la interoperabilidad de Java con Kotlin, antes era posible acceder a ciertos métodos como propiedades o funciones. Sin embargo, para reducir la duplicación y, al mismo tiempo, mantener la compatibilidad binaria, fue necesario quitarlas, ya que se trata de un cambio incompatible con la fuente. Las llamadas afectadas son las siguientes:
.isEmpty
,.getLast()
y.getFirst()
(Ifffac).
Se convirtió
CircularIntArray
en Kotlin. Debido a la interoperabilidad de Java con Kotlin, antes era posible acceder a ciertos métodos como propiedades o funciones. Sin embargo, para reducir la duplicación y, al mismo tiempo, mantener la compatibilidad binaria, fue necesario quitarlas, ya que se trata de un cambio incompatible con la fuente. Las llamadas afectadas son las siguientes:.isEmpty
,.getLast()
y.getFirst()
(Ie36ce).Se convirtió
LruCache
en Kotlin (Ia2f19).Se convirtió
SparseArrayCompat
en Kotlin (If6fe8).Se agregó un pequeño cambio de comportamiento a
SparseArrayCompat.valueAt()
, que ya no muestranull
de forma incorrecta para las llamadas no inicializadas fuera de los límites desize()
, pero dentro de la capacidad inicial proporcionada.Este cambio también introduce la nulabilidad correcta para algunos tipos que faltaban anteriormente.
.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)
Versión 1.2.0
Versión 1.2.0
1 de diciembre de 2021
Lanzamiento de androidx.collection:collection:1.2.0
y androidx.collection:collection-ktx:1.2.0
. La versión 1.2.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.1.0
- Agrega un constructor de array a
ArraySet
(Id7f19). - Se implementaron
entrySet().toArray()
,remove()
,removeAll()
yretainAll()
, y se quitó la implementación deentrySet().addAll()
para que la API deentrySet()
sea compatible (I5d505).
Versión 1.2.0-rc01
17 de noviembre de 2021
Se lanzaron androidx.collection:collection:1.2.0-rc01
y androidx.collection:collection-ktx:1.2.0-rc01
. La versión 1.2.0-rc01 contiene estas confirmaciones.
Cambios en la API
- No hay cambios en la versión beta anterior.
Versión 1.2.0-beta01
13 de octubre de 2021
Se lanzaron androidx.collection:collection:1.2.0-beta01
y androidx.collection:collection-ktx:1.2.0-beta01
. La versión 1.2.0-beta01 contiene estas confirmaciones.
Correcciones de errores
- Se implementaron
entrySet().toArray()
,remove()
,removeAll()
yretainAll()
, y se quitó la implementación deentrySet().addAll()
para que la API deentrySet()
sea compatible (I5d505).
Versión 1.2.0-alpha01
16 de diciembre de 2020
Lanzamiento de androidx.collection:collection:1.2.0-alpha01
y androidx.collection:collection-ktx:1.2.0-alpha01
. La versión 1.2.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Agrega un constructor de array a
ArraySet
(Id7f19)
Versión 1.1.0
Versión 1.1.0
5 de junio de 2019
Lanzamiento de androidx.collection:collection:1.1.0
y androidx.collection:collection-ktx:1.1.0
. Para conocer las confirmaciones incluidas en la versión 1.1.0, consulta este artículo.
A continuación, se ofrece un resumen de las diferencias entre las versiones 1.0.0 y 1.1.0:
Nuevas funciones
- Usa una implementación más eficiente para las funciones
contains
yisNotEmpty
en el artefacto "collection-ktx" (aosp/866529).
Cambios en la API
- Se agregó
putIfAbsent
aLongSparseArray
,SimpleArrayMap
ySparseArrayCompat
(aosp/772608). - Se agregó
getOrDefault
aSimpleArrayMap
(aosp/772607). - Se agregaron dos argumentos
remove
aLongSparseArray
,SimpleArrayMap
ySparseArrayCompat
. Se deben omitir las extensiones KTX correspondientes para esta funcionalidad. (aosp/772482) - Se agregaron dos argumentos
replace
aLongSparseArray
,SimpleArrayMap
ySparseArrayCompat
(aosp/772483). - Se agregaron tres argumentos
replace
aLongSparseArray
,SimpleArrayMap
ySparseArrayCompat
(aosp/772484). - Se dieron de baja los métodos redundantes
delete
. El métodoremove
ofrece la misma API y funcionalidad, y coincide con la API que utilizan los mapas no especializados. (aosp/866053)
Correcciones de errores
- Se cambió
SimpleArrayMap
para sincronizar su caché global interna de arreglos enSimpleArrayMap.class
, en lugar deArrayMap.class
. Esto garantiza que si solo usasSimpleArrayMap
, se puede quitarArrayMap
mediante herramientas de reducción de código. (aosp/934557)
Versión 1.1.0-rc01
7 de mayo de 2019
Lanzamiento de androidx.collection:collection:1.1.0-rc01
y androidx.collection:collection-ktx:1.1.0-rc01
. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Nuevas funciones
- Usa una implementación más eficiente para las funciones
contains
yisNotEmpty
en el artefacto "collection-ktx" (aosp/866529).
Versión 1.1.0-beta01
3 de abril de 2019
Lanzamiento de androidx.collection:collection:1.1.0-beta01
y androidx.collection:collection-ktx:1.1.0-beta01
. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Cambios en la API
- Se quitó el método mencionado en las notas de la versión alpha03 por haber cambiado su valor de
@RestrictTo
. No lo utilizó ninguna biblioteca de AndroidX (ni ahora ni antes) y no ofrecía ninguna funcionalidad que faltara en la API pública.
Correcciones de errores
- Se cambió
SimpleArrayMap
para sincronizar su caché global interna de arreglos enSimpleArrayMap.class
, en lugar deArrayMap.class
. Esto garantiza que si solo usasSimpleArrayMap
, se puede quitarArrayMap
mediante herramientas de reducción de código. (aosp/934557)
Versión 1.1.0-alpha03
13 de marzo de 2019
Lanzamiento de androidx.collection:collection:1.0.0-alpha03
y androidx.collection:collection-ktx:1.0.0-alpha03
.
Para obtener una lista completa de las confirmaciones incluidas en esta versión, consulta este vínculo.
Cambios en la API
- Un método en
ArraySet
previamente marcado como@RestrictTo(LIBRARY_GROUP)
se cambió a@RestrictTo(LIBRARY_GROUP_PREFIX)
. El objetivo de este cambio es admitir el uso histórico de otras bibliotecas de AndroidX que ahora están en diferentes ID de grupo de Maven. Este método se publicará o se quitará en la versión 1.1.0-alpha04, porque otras bibliotecas de AndroidX no deberían obtener API especiales que no obtienen otros desarrolladores.
Versión 1.1.0-alpha02
30 de enero de 2019
Lanzamiento de androidx.collection:collection 1.1.0-alpha02
y androidx.collection:collection-ktx 1.1.0-alpha02
.
Cambios en la API
- Se dieron de baja los métodos redundantes
delete
. Los métodosremove
ofrecen la misma API y funcionalidad, y coinciden con la API que utilizan los mapas no especializados. (aosp/866053)
Versión 1.1.0-alpha01
3 de diciembre de 2018
Cambios en la API
- Se agregó
putIfAbsent
aLongSparseArray
,SimpleArrayMap
ySparseArrayCompat
(aosp/772608). - Se agregó
getOrDefault
aSimpleArrayMap
(aosp/772607). - Se agregaron dos argumentos
remove
aLongSparseArray
,SimpleArrayMap
ySparseArrayCompat
. Se deben omitir las extensiones KTX correspondientes para esta funcionalidad. (aosp/772482) - Se agregaron dos argumentos
replace
aLongSparseArray
,SimpleArrayMap
ySparseArrayCompat
(aosp/772483). - Se agregaron tres argumentos
replace
aLongSparseArray
,SimpleArrayMap
ySparseArrayCompat
(aosp/772484).