Coleção

  
Reduza o impacto de pequenas coleções novas e já existentes na memória.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
24 de janeiro de 2024 1.4.0 - - -

Declarar dependências

Para adicionar uma dependência a Collection, é preciso adicionar o repositório Maven do Google ao projeto. Leia Repositório Maven do Google para ver mais informações.

Adicione as dependências dos artefatos necessários no arquivo build.gradle para seu app ou módulo:

Groovy

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

Kotlin

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

Para ver mais informações sobre dependências, consulte Adicionar dependências de build.

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.4

Versão 1.4.0

24 de janeiro de 2024

Lançamento de androidx.collection:collection-*:1.4.0. A versão 1.4.0 contém estas confirmações.

Mudanças importantes desde a versão 1.3.0

Novas coleções de alta eficiência para armazenar primitivos sem boxe foram adicionadas:

  • MutableScatterMap e ScatterMap: classes com MutableMap e API semelhante a um mapa
  • MutableScatterSet e ScatterSet: classes com MutableSet e API semelhante a um conjunto
  • MutableObjectList e ObjectList: classes com MutableList e API semelhante a lista

Por exemplo, um mapa com uma chave de número inteiro e um valor de tipo de referência é um IntObjectMap<T>. Um mapa com uma chave longa e um valor flutuante é um LongFloatMap. Não há uma versão com o nome ObjectObjectMap porque ela é coberta por ScatterMap/MutableScatterMap.

Versão 1.4.0-rc01

10 de janeiro de 2024

Lançamento de androidx.collection:collection-*:1.4.0-rc01 sem mudanças. A versão 1.4.0-rc01 contém estas confirmações.

Versão 1.4.0-beta02

29 de novembro de 2023

Lançamento de androidx.collection:collection-*:1.4.0-beta02. A versão 1.4.0-beta02 contém estas confirmações.

Novos recursos

  • Melhoria no desempenho de FloatFloatPair. (If5537).

Correções de bugs

  • O iterador ScatterMap.asMap() agora retorna novas instâncias (I28932, b/310365754).

Versão 1.4.0-beta01

15 de novembro de 2023

Lançamento de androidx.collection:collection-*:1.4.0-beta01. A versão 1.4.0-beta01 contém estas confirmações.

Correções de bugs

  • Correção de ListIterator ao definir incorretamente valores em ObjectList que poderiam resultar em uma falha devido a IndexOutOfBoundsException (I3bd8a, b/307049391).

Versão 1.4.0-alpha02

18 de outubro de 2023

Lançamento de androidx.collection:collection-*:1.4.0-alpha02. A versão 1.4.0-alpha02 contém estas confirmações.

Mudanças na API

  • Foi adicionada uma sobrecarga para put, que retorna o valor anterior quando é substituído por todas as coleções primitivas, como FloatFloatMap
  • Converter métodos removeIf em coleções primitivas, como MutableFloatFloatMap, para inline. Isso garante que o lambda da removeIf não seja alocado.

Versão 1.4.0-alpha01

4 de outubro de 2023

Lançamento de androidx.collection:collection-*:1.4.0-alpha01. A versão 1.4.0-alpha01 contém estas confirmações.

Novos recursos

Novas coleções de alta eficiência foram adicionadas com baixa sobrecarga de alocação e alto desempenho:

  • MutableScatterMap e ScatterMap: classes com MutableMap e API semelhante a um mapa
  • MutableScatterSet e ScatterSet: classes com MutableSet e API semelhante a um conjunto
  • MutableObjectList e ObjectList: classes com MutableList e API semelhante a lista

Novas coleções de alta eficiência para armazenar primitivos sem boxe foram adicionadas:

  • Mutable[Int|Float|Long]List: classes com uma API semelhante a MutableList<Int|Float|Long>. O [Int|Float|Long]List somente leitura também existe. Por exemplo, números inteiros podem ser mantidos em um IntList.
  • Mutable[Int|Float|Long]Set: classes com uma API semelhante a MutableSet<Int|Float|Long>. O [Int|Float|Long]Set somente leitura também existe. Por exemplo, números inteiros podem ser mantidos em um IntSet.
  • Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map: classes com uma API semelhante a Mutable<Int|Float|Long,T, Int|Float|Long|T>. O [Int|Float|Long|Object][Int|Float|Long|Object]Map somente leitura também existe. Por exemplo, um mapa com uma chave de número inteiro e um valor de tipo de referência é um IntObjectMap<T>. Um mapa com uma chave longa e um valor flutuante é um LongFloatMap. Não há uma versão com o nome ObjectObjectMap porque ela é coberta por ScatterMap/MutableScatterMap.

Versão 1.3.0

Versão 1.3.0

4 de outubro de 2023

Lançamento de androidx.collection:collection-*:1.3.0. A versão 1.3.0 contém estas confirmações.

Mudanças importantes desde a versão 1.2.0

  • Agora você pode usar coleções em projetos Kotlin Multiplatform. Os destinos de coleções que não são do Android ainda são experimentais, mas decidimos mesclar versões para facilitar a experiência dos desenvolvedores.
  • Toda a origem foi migrada para Kotlin. Como parte dessa mudança, muitas APIs agora são devidamente digitadas para nulidade, e alguns membros particulares do pacote se tornaram internal Uma lista das mudanças exatas está disponível nas notas da versão secundárias do 1.3.x abaixo.
  • Junto com a migração do Kotlin, o collection-ktx foi mesclado com o artefato principal da coleção. Você pode descartar qualquer dependência em collection:collection-ktx com segurança em favor de collection:collection, já que collection-ktx agora está vazio

Versão 1.3.0-rc01

6 de setembro de 2023

Lançamento de androidx.collection:collection-*:1.3.0-rc01 sem mudanças. A versão 1.3.0-rc01 contém estas confirmações.

Versão 1.3.0-beta01

9 de agosto de 2023

Lançamento de androidx.collection:collection-*:1.3.0-beta01. A versão 1.3.0-beta01 contém estas confirmações.

Versão 1.3.0-alpha04

24 de março de 2023

Lançamento de androidx.collection:collection-*:1.3.0-alpha04.

Correções de bugs

  • Remoção de restrições de dependência de artefatos do Maven para solucionar um problema de build em destinos nativos do Kotlin (b/274786186, KT-57531).

Versão 1.3.0-alpha03

22 de março de 2023

Lançamento de androidx.collection:collection-*:1.3.0-alpha03. A versão 1.3.0-alpha03 contém essas confirmações.

Novos recursos

  • Agora você pode usar coleções em projetos do KMM. Os destinos de coleções que não são do Android ainda são experimentais, mas decidimos mesclar versões para facilitar o teste para os desenvolvedores.

Mudanças na API

  • ArraySet agora implementa MutableCollections em vez de AbstractMutableCollection para permitir uma implementação mais eficiente de memória de toArray (I1ac32).

Correções de bugs

  • O ArraySet.toArray agora está disponível apenas na JVM porque sempre foi incluído apenas para compatibilidade com Java Os usuários do Kotlin geralmente precisam usar os auxiliares .toTypedArray de stdlib, que oferecem exatamente a mesma funcionalidade com mais segurança de tipo. (I2c59b).

Versão 1.3.0-alpha02

27 de julho de 2022

Lançamento de androidx.collection:collection:1.3.0-alpha02 e androidx.collection:collection-ktx:1.3.0-alpha02. A versão 1.3.0-alpha02 contém estas confirmações.

Mudanças na API

  • SparseArrayCompat agora está disponível para plataformas não jvm do artefato comum (Ic9bd0, b/219589118, b/228347315).
  • CircularIntArray agora está disponível para plataformas não jvm do artefato comum (I3d8ef, b/228344943).
  • LongSparseArray agora está disponível para plataformas não jvm do artefato comum (I73149, b/228347315).

Versão 1.3.0-alpha01

29 de junho de 2022

Lançamento de androidx.collection:collection:1.3.0-alpha01 e androidx.collection:collection-ktx:1.3.0-alpha01. A versão 1.3.0-alpha01 contém estas confirmações.

Novos recursos

  • collection-ktx extensão foi migrada para o artefato principal das coleções, androidx.collection:collection. Essa mudança torna as extensões -ktx preexistentes acessíveis aos usuários do Kotlin sem precisar da dependência -ktx, mantendo a compatibilidade com os usuários atuais A manutenção dessas extensões em um artefato -ktx separado não é mais útil, já que o artefato principal foi movido para o Kotlin. (I6eef2).

Mudanças na API

  • ArraySet agora estende AbstractMutableCollection e não implementa mais diretamente a interface de coleta (If6da0, b/230860589).
  • O ArraySet foi convertido para Kotlin. Devido à digitação mais rigorosa, algumas chamadas Kotlin podem não ser mais compiladas. (Id68c1, b/230860589).
    • As chamadas a seguir têm o tipo de argumento T, não T?:
      • ArraySet<T>.contains(null)
      • ArraySet<T>.add(null)
      • ArraySet<T>.remove(null)
    • As chamadas a seguir têm o tipo de retorno T?, não T!:
      • ArraySet<T?>.valueAt(n)
      • ArraySet<T?>.removeAt(n)
      • ArraySet<T?>().iterator().next()
    • As seguintes chamadas não são mais possíveis no Kotlin:
      • set.toArray(): use set.toTypedArray()
      • set.toArray(array): use set.forEachIndexed(array::set)
  • Combine o construtor sobrecarregado para SparseArrayCompat como um argumento opcional para usuários do Kotlin. (If8407, b/227474719).
  • A sintaxe de operador foi removida de SparseArrayCompat.get(key, defaultValue).. Ela ainda permite a sintaxe de operador para .get(key), mas alinha melhor a superfície da API de SparseArrayCompat com as outras classes nessa biblioteca. (I9a38d).
  • As extensões LongSparseArray foram migradas para o artefato principal, androidx.collection:collection Essa mudança torna as extensões -ktx preexistentes acessíveis aos usuários do Kotlin sem precisar da dependência -ktx, mantendo a compatibilidade com os usuários atuais A manutenção dessas extensões em um artefato -ktx separado não é mais útil, já que o artefato principal foi movido para o Kotlin. (I8659a).
  • Converta LongSparseArray em Kotlin. Essa mudança adiciona nulidade explícita aos tipos, que é uma mudança compatível com binários, mas pode causar incompatibilidades de origem. Particularmente, * .isEmpty não pode mais ser acessado como uma propriedade, ele precisa ser acessado como uma chamada de função no Kotlin - .isEmpty() (Idfd0f).
  • Converta SimpleArrayMap em Kotlin. Essa mudança introduz algumas mudanças incompatíveis, como resultado da interoperabilidade entre Java e Kotlin e da capacidade de definir corretamente a nulidade de tipos na origem
    • As APIs privadas do pacote, .mSize, .mArray, .mHashes, .indexOf(), .indexOfNull() e .indexOfValue(), foram transformadas em particulares. Essa é tecnicamente uma mudança binária incompatível, mas reflete a visibilidade pretendida desses campos e é o mais próximo que podemos alcançar no Kotlin, já que não inclui uma maneira de especificar a visibilidade privada do pacote.
    • A nulidade de alguns tipos agora está definida corretamente. Os métodos afetados são: .getOrDefault, .keyAt, .valueAt, .setValueAt, .put, .putIfAbsent, .removeAt, .replace.
    • Para usuários do Kotlin, o .isEmpty() agora está disponível apenas como uma função, e não pelo acesso à propriedade. (I271b7, b/182813986).
  • Converta CircularArray em Kotlin. Mudanças importantes:

    • Correção da nulidade dos genéricos para não nulo, o que antes era impossível de declarar, mas era aplicado em todas as APIs públicas.
    • Devido à interoperabilidade do Java do Kotlin, antes era possível acessar determinados métodos como propriedades ou funções. No entanto, para reduzir a duplicação e manter a compatibilidade binária, foi necessário removê-las, o que é uma alteração incompatível com a fonte. As chamadas afetadas são: .isEmpty, .getLast() e .getFirst(). (Ifffac).
  • Converta CircularIntArray em Kotlin. Devido à interoperabilidade com Java do Kotlin, antes era possível acessar determinados métodos como propriedades ou funções. No entanto, para reduzir a duplicação e manter a compatibilidade binária, foi necessário removê-las, o que é uma mudança incompatível com a fonte. As chamadas afetadas são: .isEmpty, .getLast() e .getFirst(). (Ie36ce).

  • O LruCache foi convertido em Kotlin (Ia2f19).

  • Converta SparseArrayCompat em Kotlin. (If6fe8).

    Uma pequena mudança de comportamento é adicionada a SparseArrayCompat.valueAt(), que não retorna mais incorretamente null para chamadas não inicializadas fora dos limites de size(), mas dentro da capacidade inicial fornecida.

    Essa mudança também introduz a nulidade correta para alguns tipos que estavam ausentes.

    • .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)

Versão 1.2.0

Versão 1.2.0

1.º de dezembro de 2021

Lançamento de androidx.collection:collection:1.2.0 e androidx.collection:collection-ktx:1.2.0. A versão 1.2.0 contém estas confirmações.

Mudanças importantes desde a 1.1.0

  • Adicione um construtor de matrizes ao ArraySet (Id7f19).
  • A API se tornou compatível com entrySet() ao implementar entrySet().toArray(), remove(), removeAll() e retainAll() e remover a implementação de entrySet().addAll() (I5d505).

Versão 1.2.0-rc01

17 de novembro de 2021

Lançamento de androidx.collection:collection:1.2.0-rc01 e androidx.collection:collection-ktx:1.2.0-rc01. A versão 1.2.0-rc01 contém estas confirmações.

Mudanças na API

  • Não houve mudanças desde a versão Beta anterior.

Versão 1.2.0-beta01

13 de outubro de 2021

Lançamento de androidx.collection:collection:1.2.0-beta01 e androidx.collection:collection-ktx:1.2.0-beta01. A versão 1.2.0-beta01 contém estas confirmações.

Correções de bugs

  • A API se tornou compatível com entrySet() ao implementar entrySet().toArray(), remove(), removeAll() e retainAll() e remover a implementação de entrySet().addAll() (I5d505).

Versão 1.2.0-alpha01

16 de dezembro de 2020

Lançamento de androidx.collection:collection:1.2.0-alpha01 e androidx.collection:collection-ktx:1.2.0-alpha01. A versão 1.2.0-alpha01 contém estas confirmações.

Mudanças na API

  • Adicione um construtor de matrizes ao ArraySet (Id7f19).

Versão 1.1.0

Versão 1.1.0

5 de junho de 2019

Lançamento de androidx.collection:collection:1.1.0 e androidx.collection:collection-ktx:1.1.0. As confirmações incluídas na versão 1.1.0 podem ser encontradas neste link.

Veja abaixo um resumo das mudanças da versão 1.0.0 para a 1.1.0:

Novos recursos

  • Uso de uma implementação mais eficiente para as funções contains e isNotEmpty no artefato "collection-ktx" (aosp/866529).

Mudanças na API

  • Adição de putIfAbsent a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772608).
  • Adição de getOrDefault a SimpleArrayMap (aosp/772607).
  • Adição de dois argumentos remove a LongSparseArray, SimpleArrayMap e SparseArrayCompat. Suspender o uso das extensões KTX correspondentes para essa funcionalidade. (aosp/772482).
  • Adição de dois argumentos replace a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772483).
  • Adição de três argumentos replace a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772484).
  • Suspensão do uso de métodos delete redundantes. O método remove oferece a mesma API e funcionalidade e corresponde à API usada por mapas não especializados. (aosp/866053, link em inglês)

Correções de bugs

  • Mudança de SimpleArrayMap para sincronizar o cache global interno de matrizes em SimpleArrayMap.class em vez de ArrayMap.class. Isso garante que, se você usar apenas SimpleArrayMap, será possível remover ArrayMap usando ferramentas de redução de código. (aosp/934557, link em inglês)

Versão 1.1.0-rc01

7 de maio de 2019

Lançamento de androidx.collection:collection:1.1.0-rc01 e androidx.collection:collection-ktx:1.1.0-rc01. As confirmações incluídas nessa versão podem ser encontradas neste link.

Novos recursos

  • Uso de uma implementação mais eficiente para as funções contains e isNotEmpty no artefato "collection-ktx" (aosp/866529).

Versão 1.1.0-beta01

3 de abril de 2019

Lançamento de androidx.collection:collection:1.1.0-beta01 e androidx.collection:collection-ktx:1.1.0-beta01. As confirmações incluídas nessa versão podem ser encontradas neste link.

Mudanças na API

  • O método mencionado em notas da versão alfa03, como tendo o valor @RestrictTo modificado, foi removido. Ele não foi usado por nenhuma biblioteca AndroidX (agora ou historicamente) e não ofereceu nenhuma funcionalidade que estava faltando na API pública.

Correções de bugs

  • Mudança de SimpleArrayMap para sincronizar o cache global interno de matrizes em SimpleArrayMap.class em vez de ArrayMap.class. Isso garante que, se você usar apenas SimpleArrayMap, será possível remover ArrayMap usando ferramentas de redução de código. (aosp/934557, link em inglês)

Versão 1.1.0-alpha03

13 de março de 2019

Lançamento de androidx.collection:collection:1.0.0-alpha03 e androidx.collection:collection-ktx:1.0.0-alpha03. A lista completa de confirmações incluídas nessa versão pode ser encontrada aqui (link em inglês).

Mudanças na API

  • Um método em ArraySet marcado anteriormente como @RestrictTo(LIBRARY_GROUP) foi alterado para @RestrictTo(LIBRARY_GROUP_PREFIX). Essa ação foi realizada para oferecer compatibilidade com o uso histórico de outras bibliotecas do AndroidX que agora pertencem a diferentes IDs de grupo do Maven. Esse método se tornará público ou será removido na versão 1.1.0-alpha04, uma vez que outras bibliotecas do AndroidX não devem receber APIs especiais a que outros desenvolvedores não tenham acesso.

Versão 1.1.0-alpha02

30 de janeiro de 2019

Lançamento de androidx.collection:collection 1.1.0-alpha02 e androidx.collection:collection-ktx 1.1.0-alpha02.

Mudanças na API

  • Suspensão do uso de métodos delete redundantes. Os métodos remove oferecem a mesma API e funcionalidade e correspondem à API usada por mapas não especializados. (aosp/866053, link em inglês)

Versão 1.1.0-alpha01

3 de dezembro de 2018

Mudanças na API

  • Adição de putIfAbsent a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772608).
  • Adição de getOrDefault a SimpleArrayMap (aosp/772607).
  • Adição de dois argumentos remove a LongSparseArray, SimpleArrayMap e SparseArrayCompat. Suspender o uso das extensões KTX correspondentes para essa funcionalidade. (aosp/772482).
  • Adição de dois argumentos replace a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772483).
  • Adição de três argumentos replace a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772484).