Collection
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
4 de septiembre de 2024 | 1.4.3 | - | - | 1.5.0-alpha01 |
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.4.3" implementation "androidx.collection:collection:$collection_version" }
Kotlin
dependencies { val collection_version = "1.4.3" implementation("androidx.collection:collection:$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 de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo 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.5
Versión 1.5.0-alpha01
4 de septiembre de 2024
Lanzamiento de androidx.collection:collection-*:1.5.0-alpha01
. La versión 1.5.0-alpha01 contiene estas confirmaciones.
Cambios en la API
OrderedScatterSet
es una colección nueva ordenada y sin asignación. (Ic4178)SieveCache
es un nuevo reemplazo sin asignación deLruCache
que ofrece mejores características de proporción de hits. (I50a17).- Se expuso la representación interna de
packedValue
paraIntIntPair
yFloatFloatPair
. (Ifeb75, b/331853566). - Agregar acceso al array de contenido en colecciones de listas. (I899d5, b/333903173).
- Agrega
DoubleList
, una estructura de datos similar a una lista optimizada para valores dobles. (Ia10d1, b/315127635).
Correcciones de errores
- La biblioteca de colecciones se trasladará a Kotlin 1.9. (I0782f)
- Optimiza muchas de las colecciones para que sean más eficientes. (Ic0566).
Versión 1.4
Versión 1.4.3
7 de agosto de 2024
Lanzamiento de androidx.collection:collection-*:1.4.3
. La versión 1.4.3 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un daño que podía ocurrir en
ScatterMap
,ScatterSet
y sus variantes primitivas. (I38a4a, b/352560465). - Optimizaciones de rendimiento. En particular:
- Reemplaza las llamadas a
check()
yrequired()
por variantes que no arrojan excepciones intercaladas. Esto reduce el tamaño final del objeto binario y, lo que es más importante, alivia un poco la presión de la caché i. - Se mejoró
removeDeletedMarkers()
en la "distribución" una familia de colecciones. La nueva versión borra los marcadores borrados de 8 marcadores a la vez y omite las escrituras más costosas en el proceso. (Ic0566).
- Reemplaza las llamadas a
Versión 1.4.2
24 de julio de 2024
Lanzamiento de androidx.collection:collection-*:1.4.2
. La versión 1.4.2 contiene estas confirmaciones.
Nuevas funciones
- Incluye objetivos multiplataforma adicionales de Kotlin:
watchos
,tvos
ylinuxArm64
. (b/352543988).
Versión 1.4.1
10 de julio de 2024
Lanzamiento de androidx.collection:collection-*:1.4.1
. La versión 1.4.1 contiene estas confirmaciones.
Correcciones de errores
- Eliminar las lápidas eliminadas del mapa/conjunto al cambiar el tamaño (7a996c5, b/345960092).
Versión 1.4.0
24 de enero de 2024
Lanzamiento de androidx.collection:collection-*:1.4.0
. La versión 1.4.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.3.0
Se agregaron nuevas colecciones de alta eficiencia para almacenar primitivas sin boxing:
MutableScatterMap
yScatterMap
- Clases conMutableMap
y API similar a un mapaMutableScatterSet
yScatterSet
- Clases conMutableSet
y API de configuración similarMutableObjectList
yObjectList
- Clases conMutableList
y API similar a una lista
Por ejemplo, un mapa con una clave de número entero y un valor de tipo de referencia es un IntObjectMap<T>
. Un mapa con una clave larga y un valor flotante es un LongFloatMap
. No existe una versión con el nombre ObjectObjectMap
porque está cubierta por ScatterMap/MutableScatterMap
.
Versión 1.4.0-rc01
10 de enero de 2024
Se lanzó androidx.collection:collection-*:1.4.0-rc01
sin cambios. La versión 1.4.0-rc01 contiene estas confirmaciones.
Versión 1.4.0-beta02
29 de noviembre de 2023
Lanzamiento de androidx.collection:collection-*:1.4.0-beta02
. La versión 1.4.0-beta02 contiene estas confirmaciones.
Nuevas funciones
- Se mejoró el rendimiento de
FloatFloatPair
. (If5537).
Correcciones de errores
- El iterador
ScatterMap.asMap()
ahora muestra instancias nuevas. (I28932, b/310365754)
Versión 1.4.0-beta01
15 de noviembre de 2023
Lanzamiento de androidx.collection:collection-*:1.4.0-beta01
. La versión 1.4.0-beta01 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error en el que
ListIterator
configuraba valores enObjectList
que podían provocar una falla debido aIndexOutOfBoundsException
. (I3bd8a, b/307049391).
Versión 1.4.0-alpha02
18 de octubre de 2023
Lanzamiento de androidx.collection:collection-*:1.4.0-alpha02
. La versión 1.4.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se agregó sobrecarga para
put
, que muestra el valor anterior cuando se reemplaza en todas las colecciones primitivas, comoFloatFloatMap
. - Convierte los métodos
removeIf
en colecciones primitivas, comoMutableFloatFloatMap
, en intercalados. Esto garantiza que no se asigne la lambda pararemoveIf
.
Versión 1.4.0-alpha01
4 de octubre de 2023
Lanzamiento de androidx.collection:collection-*:1.4.0-alpha01
. La versión 1.4.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
Se agregaron nuevas colecciones de alta eficiencia que tienen una sobrecarga de asignación baja y un alto rendimiento:
MutableScatterMap
yScatterMap
- Clases conMutableMap
y API similar a un mapaMutableScatterSet
yScatterSet
- Clases conMutableSet
y API de configuración similarMutableObjectList
yObjectList
- Clases conMutableList
y API similar a una lista
Se agregaron nuevas colecciones de alta eficiencia para almacenar primitivas sin boxing:
Mutable[Int|Float|Long]List
: Clases con una API similar aMutableList<Int|Float|Long>
. El[Int|Float|Long]List
de solo lectura también existe. Por ejemplo, los números enteros pueden contenerse en unIntList
.Mutable[Int|Float|Long]Set
: Clases con una API similar aMutableSet<Int|Float|Long>
. El[Int|Float|Long]Set
de solo lectura también existe. Por ejemplo, los números enteros pueden contenerse en un IntSet.Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map
: Clases con una API similar aMutable<Int|Float|Long,T, Int|Float|Long|T>
. El[Int|Float|Long|Object][Int|Float|Long|Object]Map
de solo lectura también existe. Por ejemplo, un mapa con una clave de número entero y un valor de tipo de referencia es unIntObjectMap<T>
. Un mapa con una clave larga y un valor flotante es unLongFloatMap
. No existe una versión con el nombreObjectObjectMap
porque está cubierta porScatterMap/MutableScatterMap
.
Versión 1.3.0
Versión 1.3.0
4 de octubre de 2023
Lanzamiento de androidx.collection:collection-*:1.3.0
. La versión 1.3.0 contiene estas confirmaciones.
Cambios importantes desde 1.2.0
- Ahora puedes usar colecciones en proyectos multiplataforma de Kotlin. Ten en cuenta que los objetivos de las Colecciones que no son de Android aún son experimentales, pero decidimos combinar las versiones para que los desarrolladores puedan probarlas con mayor facilidad.
- Todo el código fuente se migró a Kotlin. Como parte de este cambio, muchas APIs ahora se escriben correctamente en cuanto a nulidad, y algunos miembros privados de paquetes se convirtieron en
internal
. Hay una lista de cambios exactos disponible en las notas de la versión secundaria de la versión 1.3.x que aparecen a continuación. - Junto con la migración de Kotlin, se combinó
collection-ktx
con el artefacto principal de la colección. Puedes descartar de forma segura cualquier dependencia encollection:collection-ktx
y reemplazarla porcollection:collection
, ya quecollection-ktx
ahora está vacío.
Versión 1.3.0-rc01
6 de septiembre de 2023
Se lanzó androidx.collection:collection-*:1.3.0-rc01
sin cambios. La versión 1.3.0-rc01 contiene estas confirmaciones.
Versión 1.3.0-beta01
9 de agosto de 2023
Lanzamiento de androidx.collection:collection-*:1.3.0-beta01
. La versión 1.3.0-beta01 contiene estas confirmaciones.
Versión 1.3.0-alpha04
24 de marzo de 2023
Lanzamiento de androidx.collection:collection-*:1.3.0-alpha04
.
Correcciones de errores
- Se quitaron las restricciones de dependencia de los artefactos de Maven para solucionar un problema de compilación en los objetivos nativos de Kotlin (b/274786186, KT-57531).
Versión 1.3.0-alpha03
22 de marzo de 2023
Lanzamiento de androidx.collection:collection-*:1.3.0-alpha03
. La versión 1.3.0-alpha03 contiene estas confirmaciones.
Nuevas funciones
- Ahora puedes usar colecciones en proyectos de KMM. Ten en cuenta que los objetivos de las Colecciones que no son de Android aún son experimentales, pero decidimos combinar las versiones para que los desarrolladores puedan probarlas con mayor facilidad.
Cambios en la API
ArraySet
ahora implementaMutableCollections
en lugar deAbstractMutableCollection
para permitir una implementación detoArray
con mayor eficiencia de memoria. (I1ac32)
Correcciones de errores
- Ahora
ArraySet.toArray
solo está disponible en JVM, ya que siempre se incluyó solo por compatibilidad con Java. Por lo general, los usuarios de Kotlin deberían usar los asistentes.toTypedArray
de stdlib, que proporcionan exactamente la misma funcionalidad con seguridad de tipo adicional. (I2c59b).
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).