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
10 de julho de 2024 1.4.1 - - -

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.1"
    implementation "androidx.collection:collection:$collection_version"
}

Kotlin

dependencies {
    val collection_version = "1.4.1"
    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.1

10 de julho de 2024

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

Correções de bugs

  • Remova as lápides excluídas do mapa/conjunto ao redimensionar. (7a996c5, b/345960092).

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 do tipo 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 existe 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

  • Melhor 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 para ListIterator, que define valores incorretamente 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 em todas as coleções primitivas, como FloatFloatMap.
  • Converta métodos removeIf em coleções primitivas, como MutableFloatFloatMap, para in-line. Isso garante que o lambda de 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 do tipo lista.

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

  • Mutable[Int|Float|Long]List: classes com a 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 uma IntList.
  • Mutable[Int|Float|Long]Set: classes com a 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 a 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 existe 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 das Coleções que não são Android ainda são experimentais, mas decidimos mesclar as versões para facilitar o teste para os desenvolvedores.
  • Toda a origem foi migrada para Kotlin. Como parte dessa mudança, muitas APIs agora são tipadas corretamente para nulidade, e alguns membros particulares de pacotes se tornaram internal. Uma lista de alterações exatas está disponível nas notas de versão secundárias para 1.3.x abaixo.
  • Junto com a migração do Kotlin, o collection-ktx foi mesclado com o artefato da coleção principal. 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

  • Removemos as restrições de dependência dos artefatos do Maven para solucionar um problema de build nos 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 é possível usar coleções em projetos KMM. Os destinos das coleções que não são do Android ainda são experimentais, mas decidimos mesclar as versões para facilitar o teste pelos 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

  • ArraySet.toArray agora está disponível apenas na JVM, já que sempre foi incluído apenas para compatibilidade com Java. Em geral, os usuários do Kotlin precisam usar os auxiliares .toTypedArray do stdlib, que oferecem a mesma funcionalidade com a segurança de tipo extra. (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ões foram migradas para o artefato das coleções principais, 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 benéfica, 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 coleção. (If6da0, b/230860589).
  • Conversão de ArraySet em Kotlin. Devido à digitação mais rigorosa, algumas chamadas do Kotlin podem não ser mais compiladas. (Id68c1, b/230860589).
    • As seguintes chamadas têm o tipo de argumento T, não T?:
      • ArraySet<T>.contains(null)
      • ArraySet<T>.add(null)
      • ArraySet<T>.remove(null)
    • As seguintes chamadas 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).
  • Remoção da sintaxe do operador para SparseArrayCompat.get(key, defaultValue).. Isso ainda permite a sintaxe do operador para .get(key), mas alinha melhor a superfície da API de SparseArrayCompat com as outras classes da biblioteca. (I9a38d).
  • Migre as extensões LongSparseArray 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 benéfica, já que o artefato principal foi movido para o Kotlin. (I8659a).
  • Converta LongSparseArray em Kotlin. Essa mudança adiciona nulidade explícita aos tipos, o que é uma mudança compatível com binários, mas pode causar incompatibilidades de fonte. Especificamente: * .isEmpty não pode mais ser acessado como uma propriedade, ele precisa ser acessado como uma chamada de função em 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 pela capacidade de definir corretamente a nulidade de tipos na origem.
    • As APIs privadas de pacote, .mSize, .mArray, .mHashes, .indexOf(), .indexOfNull() e .indexOfValue(), se tornaram privadas. Tecnicamente, essa é uma mudança incompatível com binários, mas reflete a visibilidade pretendida desses campos e é o mais próximo que podemos alcançar em Kotlin, porque não inclui uma maneira de especificar a visibilidade privada do pacote.
    • A nulidade de alguns tipos agora está definida corretamente e os métodos afetados são: .getOrDefault, .keyAt, .valueAt, .setValueAt, .put, .putIfAbsent, .removeAt, .replace.
    • Para usuários do Kotlin, .isEmpty() agora está disponível apenas como uma função, e não pelo acesso a propriedades. (I271b7, b/182813986).
  • Converta CircularArray em Kotlin. Mudanças importantes:

    • Corrige a nulidade dos genéricos para que sejam não nulos, o que antes era impossível declarar, mas foi aplicado em todas as APIs públicas.
    • Devido à interoperabilidade de Java do Kotlin, anteriormente 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, era necessário removê-los, porque essa é uma alteração incompatível com a fonte. As chamadas afetadas são: .isEmpty, .getLast() e .getFirst(). (Ifffac).
  • Converta CircularIntArray em Kotlin. Devido à interoperabilidade de Java do Kotlin, anteriormente 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, era necessário removê-los, porque essa é uma alteração incompatível com a fonte. As chamadas afetadas são: .isEmpty, .getLast() e .getFirst(). (Ie36ce).

  • Conversão de LruCache em Kotlin (Ia2f19).

  • Converta SparseArrayCompat em Kotlin. (If6fe8).

    Uma pequena mudança de comportamento é adicionada a SparseArrayCompat.valueAt(), que não retorna 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).