Coleção
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.
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
eScatterMap
: classes comMutableMap
e API semelhante a um mapaMutableScatterSet
eScatterSet
: classes comMutableSet
e API semelhante a um conjuntoMutableObjectList
eObjectList
: classes comMutableList
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 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 por todas as coleções primitivas, comoFloatFloatMap
- Converter métodos
removeIf
em coleções primitivas, comoMutableFloatFloatMap
, para inline. Isso garante que o lambda daremoveIf
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
: classes comMutableMap
e API semelhante a um mapaMutableScatterSet
eScatterSet
: classes comMutableSet
e API semelhante a um conjuntoMutableObjectList
eObjectList
: classes comMutableList
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 aMutableList<Int|Float|Long>
. O[Int|Float|Long]List
somente leitura também existe. Por exemplo, números inteiros podem ser mantidos em umIntList
.Mutable[Int|Float|Long]Set
: classes com uma 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 uma 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 há 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 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 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
- 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 implementaMutableCollections
em vez deAbstractMutableCollection
para permitir uma implementação mais eficiente de memória detoArray
(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 estendeAbstractMutableCollection
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ãoT?
:ArraySet<T>.contains(null)
ArraySet<T>.add(null)
ArraySet<T>.remove(null)
- As chamadas a seguir 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 chamadas a seguir têm o tipo de argumento
- 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 deSparseArrayCompat
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).
- As APIs privadas do pacote,
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 incorretamentenull
para chamadas não inicializadas fora dos limites desize()
, 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 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).