Coleção

  
Reduza o impacto na memória de coleções novas e existentes que sejam pequenas.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
30 de outubro de 2024 1.4.5 - - 1.5.0-alpha05

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

Kotlin

dependencies {
    val collection_version = "1.4.3"
    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.5

Versão 1.5.0-alpha05

30 de outubro de 2024

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

Versão 1.5.0-alpha04

16 de outubro de 2024

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

Versão 1.5.0-alpha03

2 de outubro de 2024

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

Mudanças na API

  • Atualização da versão do Kotlin para a 1.9 (I1a14c).

Contribuição externa

  • Encaminhar contains para containsKey. Obrigado, Jake Wharton! (I9362b).
  • Adicione criadores de contêiner para coleções especializadas em escalares. Obrigado, Jake Wharton! (I13179).

Versão 1.5.0-alpha02

18 de setembro de 2024

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

Mudanças na API

  • Adição de suporte para a plataforma de destino watchosDeviceArm64. (I1cc04, b/364652024).

Versão 1.5.0-alpha01

4 de setembro de 2024

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

Mudanças na API

  • OrderedScatterSet é uma nova coleção ordenada e sem alocação (Ic4178).
  • O SieveCache é um novo substituto livre de alocação para LruCache que oferece melhores características de taxa de acerto. (I50a17).
  • A representação interna de packedValue foi exposta para IntIntPair e FloatFloatPair. (Ifeb75, b/331853566).
  • Adição de acesso à matriz de conteúdo em coleções de listas. (I899d5, b/333903173).
  • Adicionamos DoubleList, uma estrutura de dados semelhante a uma lista otimizada para valores duplos. (Ia10d1, b/315127635).

Correções de bugs

  • A biblioteca de coleções está sendo migrada para Kotlin 1.9 (I0782f).
  • Otimize muitas das coleções para que sejam mais eficientes. (Ic0566).

Versão 1.4

Versão 1.4.5

30 de outubro de 2024

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

Versão 1.4.4

18 de setembro de 2024

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

Correções de bugs

  • Solução alternativa para ArrayIndexOutOfBounds ao classificar uma coleção vazia. (I65245).

Versão 1.4.3

7 de agosto de 2024

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

Correções de bugs

  • Correção de uma corrupção que poderia ocorrer em ScatterMap, ScatterSet e nas variantes primitivas. (I38a4a, b/352560465).
  • Otimizações de desempenho. Mais especificamente:
    • Substitua as chamadas para check() e required() por variantes que não geram exceções inline. Isso reduz o tamanho final do binário e, mais importante, alivia um pouco a pressão do i-cache.
    • Melhoria em removeDeletedMarkers() na família de coleções "dispersão". A nova versão limpa marcadores excluídos 8 marcadores por vez e pula gravações mais caras no processo. (Ic0566).

Versão 1.4.2

24 de julho de 2024

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

Novos recursos

  • Inclui outros destinos do Kotlin Multiplatform: watchos, tvos, linuxArm64. (b/352543988).

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 Set
  • MutableObjectList e ObjectList: classes com MutableList e API semelhante a uma 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 que definia valores incorretamente em ObjectList, o que poderia 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

  • A sobrecarga put foi adicionada e retorna o valor anterior quando ele é 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 a lambda para removeIf não seja alocada.

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

Foram adicionadas novas coleções de alta eficiência 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 Set
  • MutableObjectList e ObjectList: classes com MutableList e API do tipo lista.

Foram adicionadas novas coleções de alta eficiência para armazenar primitivos sem boxing:

  • Mutable[Int|Float|Long]List: classes com 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 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 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. As plataformas que não são Android ainda são experimentais, mas decidimos mesclar as versões para facilitar a experimentação pelos desenvolvedores.
  • Toda a origem foi migrada para o 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.
  • Com a migração do Kotlin, collection-ktx foi mesclada com o artefato de coleção principal. Você pode descartar com segurança todas as dependências de collection:collection-ktx 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 do KMM. As plataformas que não são Android das coleções ainda são experimentais, mas decidimos mesclar as versões para facilitar a experiência dos desenvolvedores.

Mudanças na API

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

Correções de bugs

  • O ArraySet.toArray agora só está disponível na JVM, porque sempre foi incluído apenas para compatibilidade com o Java. Em geral, os usuários do Kotlin precisam usar os auxiliares .toTypedArray do stdlib, que oferecem a mesma funcionalidade com segurança de tipo adicional. (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 que não são JVM do artefato comum (Ic9bd0, b/219589118, b/228347315).
  • CircularIntArray agora está disponível para plataformas que não são JVM do artefato comum (I3d8ef, b/228344943).
  • LongSparseArray agora está disponível para plataformas que não sã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 pré-existentes acessíveis aos usuários do Kotlin sem exigir a dependência -ktx, mantendo a compatibilidade com os usuários atuais. Manter essas extensões em um artefato -ktx separado não é mais benéfico, 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 à tipificação mais rigorosa, algumas chamadas do Kotlin podem não ser 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 do operador para SparseArrayCompat.get(key, defaultValue). foi removida. No entanto, a sintaxe do operador para .get(key) ainda é permitida, mas a plataforma da API de SparseArrayCompat foi alinhada melhor com as outras classes dessa biblioteca. (I9a38d).
  • Migração das extensões LongSparseArray para o artefato principal, androidx.collection:collection. Essa mudança torna as extensões -ktx pré-existentes acessíveis aos usuários do Kotlin sem exigir a dependência -ktx, mantendo a compatibilidade com os usuários atuais. Manter essas extensões em um artefato -ktx separado não é mais benéfico, 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. Em particular: * .isEmpty não está mais acessível como uma propriedade, 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 a capacidade de definir corretamente a nulidade de tipos na origem.
    • As APIs privadas do pacote, .mSize, .mArray, .mHashes, .indexOf(), .indexOfNull() e .indexOfValue(), foram tornadas privadas. Essa é tecnicamente uma mudança incompatível binária, mas reflete a visibilidade pretendida desses campos e é o mais próximo que podemos alcançar no Kotlin, já que ele não inclui uma maneira de especificar a visibilidade privada do pacote.
    • A nulidade de alguns tipos agora é definida corretamente. Os métodos afetados são: .getOrDefault, .keyAt, .valueAt, .setValueAt, .put, .putIfAbsent, .removeAt e .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 não ser nula, o que antes era impossível de declarar, mas era aplicado em todas as APIs públicas.
    • Devido à interoperabilidade do Kotlin com Java, antes era possível acessar alguns métodos como propriedades ou funções. No entanto, para reduzir a duplicação e manter a compatibilidade binária, foi necessário remover esses elementos, o que é uma mudança incompatível com a origem. As chamadas afetadas são: .isEmpty, .getLast() e .getFirst(). (Ifffac).
  • Converta CircularIntArray em Kotlin. Devido à interoperabilidade do Kotlin com Java, 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ê-los, o que é uma mudança incompatível com a origem. As chamadas afetadas são: .isEmpty, .getLast() e .getFirst(). (Ie36ce).

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

  • Converta SparseArrayCompat em Kotlin. (If6fe8).

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

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