Collection

  
Reduce el impacto de la memoria de las colecciones existentes y nuevas que sean pequeñas.
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.

Cómo crear un error nuevo

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 extiende AbstractMutableCollection 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, no T?:
      • ArraySet<T>.contains(null)
      • ArraySet<T>.add(null)
      • ArraySet<T>.remove(null)
    • Las siguientes llamadas tienen el tipo de datos que se muestra T?, no T!:
      • ArraySet<T?>.valueAt(n)
      • ArraySet<T?>.removeAt(n)
      • ArraySet<T?>().iterator().next()
    • Las siguientes llamadas ya no son posibles desde Kotlin:
      • set.toArray(): usa set.toTypedArray().
      • set.toArray(array): usa set.forEachIndexed(array::set).
  • 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 de SparseArrayCompat 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).
  • 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 muestra null de forma incorrecta para las llamadas no inicializadas fuera de los límites de size(), 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() y retainAll(), y se quitó la implementación de entrySet().addAll() para que la API de entrySet() 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() y retainAll(), y se quitó la implementación de entrySet().addAll() para que la API de entrySet() 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 y isNotEmpty en el artefacto "collection-ktx" (aosp/866529).

Cambios en la API

  • Se agregó putIfAbsent a LongSparseArray, SimpleArrayMap y SparseArrayCompat (aosp/772608).
  • Se agregó getOrDefault a SimpleArrayMap (aosp/772607).
  • Se agregaron dos argumentos remove a LongSparseArray, SimpleArrayMap y SparseArrayCompat. Se deben omitir las extensiones KTX correspondientes para esta funcionalidad. (aosp/772482)
  • Se agregaron dos argumentos replace a LongSparseArray, SimpleArrayMap y SparseArrayCompat (aosp/772483).
  • Se agregaron tres argumentos replace a LongSparseArray, SimpleArrayMap y SparseArrayCompat (aosp/772484).
  • Se dieron de baja los métodos redundantes delete. El método remove 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 en SimpleArrayMap.class, en lugar de ArrayMap.class. Esto garantiza que si solo usas SimpleArrayMap, se puede quitar ArrayMap 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 y isNotEmpty 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 en SimpleArrayMap.class, en lugar de ArrayMap.class. Esto garantiza que si solo usas SimpleArrayMap, se puede quitar ArrayMap 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étodos remove 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 a LongSparseArray, SimpleArrayMap y SparseArrayCompat (aosp/772608).
  • Se agregó getOrDefault a SimpleArrayMap (aosp/772607).
  • Se agregaron dos argumentos remove a LongSparseArray, SimpleArrayMap y SparseArrayCompat. Se deben omitir las extensiones KTX correspondientes para esta funcionalidad. (aosp/772482)
  • Se agregaron dos argumentos replace a LongSparseArray, SimpleArrayMap y SparseArrayCompat (aosp/772483).
  • Se agregaron tres argumentos replace a LongSparseArray, SimpleArrayMap y SparseArrayCompat (aosp/772484).