Coleção
Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
7 de agosto de 2024 | 1.4.3 | - | - | - |
Como 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.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.4
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
- Foi corrigida uma corrupção que poderia acontecer em
ScatterMap
,ScatterSet
e as variantes primitivas delas. (I38a4a, b/352560465). - Otimizações de desempenho. Especificamente, as seguintes:
- Substitua as chamadas para
check()
erequired()
por variantes que não geram exceções inline. Isso reduz o tamanho do binário final e, mais importante, alivia um pouco a pressão do i-cache. - Melhoramos o
removeDeletedMarkers()
na "dispersão". família de coleções. A nova versão limpa oito marcadores excluídos por vez e pula gravações mais caras no processo. (Ic0566).
- Substitua as chamadas para
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 multiplataforma do Kotlin:
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
eScatterMap
: aulas comMutableMap
e API semelhante a um mapaMutableScatterSet
eScatterSet
: aulas comMutableSet
e API semelhante a um conjuntoMutableObjectList
eObjectList
: aulas comMutableList
e API 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 emObjectList
que poderiam resultar em uma falha devido aIndexOutOfBoundsException
(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, comoFloatFloatMap
. - Converta métodos
removeIf
em coleções primitivas, comoMutableFloatFloatMap
, para in-line. Isso garante que o lambda deremoveIf
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
eScatterMap
: aulas comMutableMap
e API semelhante a um mapaMutableScatterSet
eScatterSet
: aulas comMutableSet
e API semelhante a um conjuntoMutableObjectList
eObjectList
: aulas comMutableList
e API 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 aMutableList<Int|Float|Long>
. O[Int|Float|Long]List
somente leitura também existe. Por exemplo, números inteiros podem ser mantidos em umaIntList
.Mutable[Int|Float|Long]Set
: classes com a API semelhante aMutableSet<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 aMutable<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 é umIntObjectMap<T>
. Um mapa com uma chave longa e um valor flutuante é umLongFloatMap
. Não existe uma versão com o nomeObjectObjectMap
porque ela é coberta porScatterMap/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 emcollection:collection-ktx
com segurança em favor decollection:collection
, já quecollection-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 Android ainda são experimentais, mas decidimos mesclar as versões para facilitar o teste pelos desenvolvedores.
Mudanças na API
ArraySet
agora implementaMutableCollections
em vez deAbstractMutableCollection
para permitir uma implementação mais eficiente de memória detoArray
(I1ac32).
Correções de bugs
ArraySet.toArray
agora está disponível apenas na JVM, porque 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 no artefato comum (I3d8ef, b/228344943).LongSparseArray
agora está disponível para plataformas não JVM no 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 exigir a 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 estendeAbstractMutableCollection
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ãoT?
:ArraySet<T>.contains(null)
ArraySet<T>.add(null)
ArraySet<T>.remove(null)
- As seguintes chamadas têm o tipo de retorno
T?
, nãoT!
: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()
: useset.toTypedArray()
set.toArray(array)
: useset.forEachIndexed(array::set)
- As seguintes chamadas têm o tipo de argumento
- 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 deSparseArrayCompat
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 exigir a 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 particulares do pacote,
.mSize
,.mArray
,.mHashes
,.indexOf()
,.indexOfNull()
e.indexOfValue()
foram concluídas privado, essa alteração tecnicamente é incompatível com o binário, mas reflete a visibilidade pretendida desses campos e é o mais próximo pode ser alcançada em Kotlin, já que não inclui uma maneira de especificar visibilidade "package-private". - Agora, a nulidade de alguns tipos está definida corretamente, o tipo
métodos 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 em vez de também pelo acesso a propriedades. (I271b7, b/182813986).
- As APIs particulares do pacote,
Converta
CircularArray
em Kotlin. Mudanças importantes:- Corrige a nulidade dos genéricos para que não sejam nulos, o que foi anteriormente impossível de declarar, mas foi aplicada em todas as APIs públicas.
- Devido à interoperabilidade de Java do Kotlin, anteriormente era possível acessar
certos métodos como propriedades ou funções. No entanto, para reduzir
e manter a compatibilidade binária, mas era necessário
para removê-los, que é uma alteração incompatível com a origem. As pessoas afetadas
chamadas 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 mais incorretamentenull
para chamadas não inicializadas de limites desize()
, mas dentro da capacidade inicial fornecida.Essa mudança também introduz a nulidade correta para alguns tipos que foram que não existiam antes.
.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 implementarentrySet().toArray()
,remove()
,removeAll()
eretainAll()
e remover a implementação deentrySet().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 implementarentrySet().toArray()
,remove()
,removeAll()
eretainAll()
e remover a implementação deentrySet().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
eisNotEmpty
no artefato "collection-ktx" (aosp/866529).
Mudanças na API
- Adição de
putIfAbsent
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772608). - Adição de
getOrDefault
aSimpleArrayMap
(aosp/772607). - Adição de dois argumentos
remove
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
. Suspender o uso das extensões KTX correspondentes para essa funcionalidade. (aosp/772482). - Adição de dois argumentos
replace
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772483). - Adição de três argumentos
replace
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772484). - Suspensão do uso de métodos
delete
redundantes. O métodoremove
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 emSimpleArrayMap.class
em vez deArrayMap.class
. Isso garante que, se você usar apenasSimpleArrayMap
, será possível removerArrayMap
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
eisNotEmpty
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 emSimpleArrayMap.class
em vez deArrayMap.class
. Isso garante que, se você usar apenasSimpleArrayMap
, será possível removerArrayMap
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étodosremove
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
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772608). - Adição de
getOrDefault
aSimpleArrayMap
(aosp/772607). - Adição de dois argumentos
remove
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
. Suspender o uso das extensões KTX correspondentes para essa funcionalidade. (aosp/772482). - Adição de dois argumentos
replace
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772483). - Adição de três argumentos
replace
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772484).