Raccolta
Aggiornamento più recente | Release stabile | Candidato per l'uscita | Versione beta | Release alpha |
---|---|---|---|---|
7 agosto 2024 | 1.4.3 | - | - | - |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza alla raccolta, devi aggiungere il Repository Maven di Google al tuo progetto. Consulta il Repository Maven di Google per ulteriori informazioni.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle
per
l'app o il modulo:
Alla moda
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") }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze nella build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Non esitare a contattarci in caso di nuovi problemi o idee per migliorare questa raccolta. Dai un'occhiata alle problemi esistenti in questa raccolta, prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente tramite facendo clic sul pulsante a forma di stella.
Consulta la documentazione di Issue Tracker per ulteriori informazioni.
Versione 1.4
Versione 1.4.3
7 agosto 2024
Viene rilasciato androidx.collection:collection-*:1.4.3
. La versione 1.4.3 contiene questi commit.
Correzioni di bug
- È stato corretto un problema di corruzione che poteva verificarsi in
ScatterMap
,ScatterSet
e nelle relative varianti primitive. (I38a4a, b/352560465) - Ottimizzazioni delle prestazioni. In particolare:
- Sostituisci le chiamate a
check()
erequired()
con varianti che non prevedono la generazione di eccezioni incorporate. Ciò riduce la dimensione del file binario finale e, soprattutto, riduce un po' la pressione di i-cache. - Miglioramento della metrica
removeDeletedMarkers()
nella sezione "A dispersione" famiglia di raccolte. La nuova versione cancella gli indicatori eliminati otto marcatori alla volta ed evita le scritture più costose durante il processo. (Ic0566)
- Sostituisci le chiamate a
Versione 1.4.2
24 luglio 2024
Viene rilasciato androidx.collection:collection-*:1.4.2
. La versione 1.4.2 contiene questi commit.
Nuove funzionalità
- Include altri target multipiattaforma Kotlin:
watchos
,tvos
elinuxArm64
. (b/352543988)
Versione 1.4.1
10 luglio 2024
Viene rilasciato androidx.collection:collection-*:1.4.1
. La versione 1.4.1 contiene questi commit.
Correzioni di bug
- Rimuovi i lapidi eliminati da Mappa/Set durante il ridimensionamento. (7a996c5, b/345960092)
Versione 1.4.0
24 gennaio 2024
Viene rilasciato androidx.collection:collection-*:1.4.0
. La versione 1.4.0 contiene questi commit.
Modifiche importanti dalla versione 1.3.0
Sono state aggiunte nuove raccolte ad alta efficienza per l'archiviazione di primitive senza boxe:
MutableScatterMap
eScatterMap
- Corsi conMutableMap
e API Map-likeMutableScatterSet
eScatterSet
- Corsi conMutableSet
e API di tipo setMutableObjectList
eObjectList
- Corsi conMutableList
e API di tipo elenco
Ad esempio, una mappa con una chiave intera e un valore per il tipo di riferimento è IntObjectMap<T>
. Una mappa con una chiave lunga e un valore in virgola mobile è LongFloatMap
. Non esiste una versione con il nome ObjectObjectMap
perché è coperta da ScatterMap/MutableScatterMap
.
Versione 1.4.0-rc01
10 gennaio 2024
androidx.collection:collection-*:1.4.0-rc01
viene rilasciato senza modifiche. La versione 1.4.0-rc01 contiene questi commit.
Versione 1.4.0-beta02
29 novembre 2023
Viene rilasciato androidx.collection:collection-*:1.4.0-beta02
. La versione 1.4.0-beta02 contiene questi commit.
Nuove funzionalità
- Prestazioni di
FloatFloatPair
migliorate. (If5537)
Correzioni di bug
- L'iteratore
ScatterMap.asMap()
ora restituisce nuove istanze (I28932, b/310365754)
Versione 1.4.0-beta01
15 novembre 2023
Viene rilasciato androidx.collection:collection-*:1.4.0-beta01
. La versione 1.4.0-beta01 contiene questi commit.
Correzioni di bug
- Correzione per l'errata impostazione di valori di
ListIterator
inObjectList
che poteva causare un arresto anomalo a causa diIndexOutOfBoundsException
. (I3bd8a, b/307049391)
Versione 1.4.0-alpha02
18 ottobre 2023
Viene rilasciato androidx.collection:collection-*:1.4.0-alpha02
. La versione 1.4.0-alpha02 contiene questi commit.
Modifiche alle API
- Sovraccarico aggiunto per
put
che restituisce il valore precedente quando viene sostituito in tutte le raccolte primitive, comeFloatFloatMap
. - Converti i metodi
removeIf
su raccolte primitive, comeMutableFloatFloatMap
, in linea. Ciò garantisce che la funzione lambda perremoveIf
non venga allocata.
Versione 1.4.0-alpha01
4 ottobre 2023
Viene rilasciato androidx.collection:collection-*:1.4.0-alpha01
. La versione 1.4.0-alpha01 contiene questi commit.
Nuove funzionalità
Sono state aggiunte nuove raccolte ad alta efficienza con un overhead di allocazione ridotto e un rendimento elevato:
MutableScatterMap
eScatterMap
- Corsi conMutableMap
e API Map-likeMutableScatterSet
eScatterSet
- Corsi conMutableSet
e API di tipo setMutableObjectList
eObjectList
- Corsi conMutableList
e API di tipo elenco
Sono state aggiunte nuove raccolte ad alta efficienza per l'archiviazione di primitive senza boxe:
Mutable[Int|Float|Long]List
: classi con API di tipoMutableList<Int|Float|Long>
. Esiste anche l'elemento[Int|Float|Long]List
di sola lettura. Ad esempio, i numeri interi possono essere contenuti in unIntList
.Mutable[Int|Float|Long]Set
: classi con API di tipoMutableSet<Int|Float|Long>
. Esiste anche l'elemento[Int|Float|Long]Set
di sola lettura. Ad esempio, i numeri interi possono essere contenuti in un IntSet.Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map
: classi con API di tipoMutable<Int|Float|Long,T, Int|Float|Long|T>
. Esiste anche l'elemento[Int|Float|Long|Object][Int|Float|Long|Object]Map
di sola lettura. Ad esempio, una mappa con una chiave intera e un valore per il tipo di riferimento èIntObjectMap<T>
. Una mappa con una chiave lunga e un valore in virgola mobile èLongFloatMap
. Non esiste una versione con il nomeObjectObjectMap
perché è coperta daScatterMap/MutableScatterMap
.
Versione 1.3.0
Versione 1.3.0
4 ottobre 2023
Viene rilasciato androidx.collection:collection-*:1.3.0
. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
- Ora puoi utilizzare le raccolte nei progetti multipiattaforma Kotlin. Tieni presente che i target delle raccolte non Android sono ancora sperimentali, ma abbiamo deciso di unire le versioni per consentire agli sviluppatori di provarle più facilmente.
- È stata eseguita la migrazione di tutta l'origine in Kotlin. Nell'ambito di questa modifica, molte API sono ora digitate correttamente per nulle e alcuni membri privati del pacchetto sono diventati
internal
. Un elenco delle modifiche esatte è disponibile nelle note di rilascio secondarie per la versione 1.3.x riportate di seguito. - Insieme alla migrazione di Kotlin,
collection-ktx
è stato unito all'artefatto della raccolta principale. Puoi tranquillamente eliminare qualsiasi dipendenza sucollection:collection-ktx
a favore dicollection:collection
, poiché oracollection-ktx
è vuoto.
Versione 1.3.0-rc01
6 settembre 2023
androidx.collection:collection-*:1.3.0-rc01
viene rilasciato senza modifiche. La versione 1.3.0-rc01 contiene questi commit.
Versione 1.3.0-beta01
9 agosto 2023
Viene rilasciato androidx.collection:collection-*:1.3.0-beta01
. La versione 1.3.0-beta01 contiene questi commit.
Versione 1.3.0-alpha04
24 marzo 2023
Viene rilasciato androidx.collection:collection-*:1.3.0-alpha04
.
Correzioni di bug
- Sono stati rimossi i vincoli di dipendenza dagli artefatti Maven per risolvere un problema di build nelle destinazioni native Kotlin (b/274786186, KT-57531).
Versione 1.3.0-alpha03
22 marzo 2023
Viene rilasciato androidx.collection:collection-*:1.3.0-alpha03
. La versione 1.3.0-alpha03 contiene questi commit.
Nuove funzionalità
- Ora puoi utilizzare le raccolte nei progetti KMM. Tieni presente che i target delle raccolte non Android sono ancora sperimentali, ma abbiamo deciso di unire le versioni per consentire agli sviluppatori di provarle più facilmente.
Modifiche alle API
ArraySet
ora implementaMutableCollections
anzichéAbstractMutableCollection
per consentire un'implementazione più efficiente in termini di memoria ditoArray
(I1ac32)
Correzioni di bug
ArraySet.toArray
è ora disponibile solo su JVM, in quanto era sempre incluso solo per la compatibilità con Java. In genere gli utenti Kotlin dovrebbero usare gli assistenti.toTypedArray
di stdlib, che offrono esattamente la stessa funzionalità con una maggiore sicurezza dei tipi. (I2c59b).
Versione 1.3.0-alpha02
27 luglio 2022
Vengono rilasciate le versioni androidx.collection:collection:1.3.0-alpha02
e androidx.collection:collection-ktx:1.3.0-alpha02
. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche alle API
SparseArrayCompat
è ora disponibile per le piattaforme non jvm dall'artefatto comune (Ic9bd0, b/219589118, b/228347315)CircularIntArray
è ora disponibile per le piattaforme non jvm dall'artefatto comune (I3d8ef, b/228344943)LongSparseArray
è ora disponibile per le piattaforme non jvm dall'artefatto comune (I73149, b/228347315)
Versione 1.3.0-alpha01
29 giugno 2022
Vengono rilasciate le versioni androidx.collection:collection:1.3.0-alpha01
e androidx.collection:collection-ktx:1.3.0-alpha01
. La versione 1.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stata eseguita la migrazione di
collection-ktx
estensioni nell'elemento delle raccolte principale,androidx.collection:collection
. Questa modifica rende le estensioni -ktx preesistenti accessibili agli utenti Kotlin senza richiedere la dipendenza -ktx, pur mantenendo la compatibilità per gli utenti esistenti. Mantenere queste estensioni in un artefatto -ktx separato non è più vantaggioso poiché l'artefatto principale è stato spostato su Kotlin. (I6eef2)
Modifiche alle API
- Ora
ArraySet
estendeAbstractMutableCollection
e non implementa più direttamente l'interfaccia Raccolta. (If6da0, b/230860589) ArraySet
convertita in Kotlin. A causa della digitazione più rigida, alcune chiamate Kotlin potrebbero non essere più compilate. (Id68c1, b/230860589)- Le seguenti chiamate hanno il tipo di argomento
T
, nonT?
:ArraySet<T>.contains(null)
ArraySet<T>.add(null)
ArraySet<T>.remove(null)
- Il tipo restituito per le seguenti chiamate è
T?
, nonT!
:ArraySet<T?>.valueAt(n)
ArraySet<T?>.removeAt(n)
ArraySet<T?>().iterator().next()
- Le seguenti chiamate non sono più possibili da Kotlin:
set.toArray()
- utilizzaset.toTypedArray()
set.toArray(array)
- utilizzaset.forEachIndexed(array::set)
- Le seguenti chiamate hanno il tipo di argomento
- Combina il costruttore sovraccarico per
SparseArrayCompat
come argomento facoltativo per gli utenti Kotlin. (If8407, b/227474719) - Rimuovi la sintassi dell'operatore per
SparseArrayCompat.get(key, defaultValue).
. Tieni presente che questa opzione consente comunque la sintassi dell'operatore per.get(key)
, ma allinea meglio la superficie API diSparseArrayCompat
alle altre classi in questa libreria. (I9a38d) - Esegui la migrazione delle estensioni
LongSparseArray
nell'elemento principale, androidx.collection:collection. Questa modifica rende le estensioni -ktx preesistenti accessibili agli utenti Kotlin senza richiedere la dipendenza -ktx, pur mantenendo la compatibilità per gli utenti esistenti. Mantenere queste estensioni in un artefatto -ktx separato non è più vantaggioso poiché l'artefatto principale è stato spostato su Kotlin. (I8659a) - Converti
LongSparseArray
in Kotlin. Questa modifica aggiunge nullità esplicita ai suoi tipi, che è una modifica compatibile con le versioni binarie, ma potrebbe causare incompatibilità alle origini. In particolare: *.isEmpty
non è più accessibile come proprietà. È necessario accedervi come chiamata di funzione in Kotlin -.isEmpty()
(Idfd0f) - Converti
SimpleArrayMap
in Kotlin. Questa modifica introduce alcune modifiche incompatibili, come risultato dell'interoperabilità Java-Kotlin e della capacità di definire correttamente la nullità dei tipi nel codice sorgente.- Le API private del pacchetto,
.mSize
,.mArray
,.mHashes
, Sono state apportate.indexOf()
,.indexOfNull()
e.indexOfValue()
privata. Si tratta di una modifica tecnicamente incompatibile con i file binari, ma riflette la visibilità prevista di questi campi ed è il più vicino che è possibile ottenere in Kotlin poiché non include un modo per specificare la visibilità privata del pacchetto. - La nullità di alcuni tipi è ora definita correttamente, il tipo
metodi sono:
.getOrDefault
,.keyAt
,.valueAt
,.setValueAt
,.put
,.putIfAbsent
,.removeAt
e.replace
. - Per gli utenti di Kotlin,
.isEmpty()
è ora disponibile solo come funzione anziché anche tramite l'accesso alle proprietà. (I271b7, b/182813986)
- Le API private del pacchetto,
Converti
CircularArray
in Kotlin. Modifiche importanti:- Corregge la nullità dei suoi generici in modo che sia diversa da null, cosa che in precedenza era impossibile dichiarare, ma applicata in tutte le sue API pubbliche.
- A causa dell'interoperabilità Java di Kotlin, in precedenza era possibile accedere
alcuni metodi come proprietà o funzioni. Tuttavia, per ridurre
la duplicazione pur mantenendo la compatibilità binaria, era necessario
per rimuoverli, una modifica non compatibile con l'origine. Il
le chiamate sono:
.isEmpty
,.getLast()
e.getFirst()
. (Ifffac).
Converti
CircularIntArray
in Kotlin. A causa dell'interoperabilità Java di Kotlin, in precedenza era possibile accedere a determinati metodi sia come proprietà che come funzioni. Tuttavia, per ridurre la duplicazione mantenendo la compatibilità binaria, era necessario rimuoverle, una modifica non compatibile con l'origine. Le chiamate interessate sono:.isEmpty
,.getLast()
e.getFirst()
. (Ie36ce)Converti
LruCache
in Kotlin (Ia2f19)Converti
SparseArrayCompat
in Kotlin. (If6fe8)Viene aggiunta una piccola modifica del comportamento a
SparseArrayCompat.valueAt()
, che non restituisce più in modo erratonull
per chiamate non inizializzate su limiti disize()
, ma entro la capacità iniziale fornita.Questa modifica introduce anche la nullità corretta per alcuni tipi, in precedenza mancante.
.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)
Versione 1.2.0
Versione 1.2.0
1 dicembre 2021
Vengono rilasciate le versioni androidx.collection:collection:1.2.0
e androidx.collection:collection-ktx:1.2.0
. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
- Aggiungi un costruttore di array a
ArraySet
. (Id7f19) - Rendi conforme l'API
entrySet()
implementandoentrySet().toArray()
,remove()
,removeAll()
eretainAll()
e rimuovendo l'implementazione dientrySet().addAll()
(I5d505)
Versione 1.2.0-rc01
17 novembre 2021
Vengono rilasciate le versioni androidx.collection:collection:1.2.0-rc01
e androidx.collection:collection-ktx:1.2.0-rc01
. La versione 1.2.0-rc01 contiene questi commit.
Modifiche alle API
- Nessuna modifica rispetto alla versione beta precedente.
Versione 1.2.0-beta01
13 ottobre 2021
Vengono rilasciate le versioni androidx.collection:collection:1.2.0-beta01
e androidx.collection:collection-ktx:1.2.0-beta01
. La versione 1.2.0-beta01 contiene questi commit.
Correzioni di bug
- Rendi conforme l'API
entrySet()
implementandoentrySet().toArray()
,remove()
,removeAll()
eretainAll()
e rimuovendo l'implementazione dientrySet().addAll()
(I5d505)
Versione 1.2.0-alpha01
16 dicembre 2020
Vengono rilasciate le versioni androidx.collection:collection:1.2.0-alpha01
e androidx.collection:collection-ktx:1.2.0-alpha01
. La versione 1.2.0-alpha01 contiene questi commit.
Modifiche alle API
- Aggiungi un costruttore di array a
ArraySet
. (Id7f19)
Versione 1.1.0
Versione 1.1.0
5 giugno 2019
Vengono rilasciate le versioni androidx.collection:collection:1.1.0
e androidx.collection:collection-ktx:1.1.0
. I commit inclusi 1.1.0 sono disponibili qui.
Di seguito è riportato un riepilogo delle modifiche dalla versione 1.0.0 alla versione 1.1.0:
Nuove funzionalità
- Utilizza un'implementazione più efficiente per le funzioni
contains
eisNotEmpty
in "collection-ktx" artefatto. (aosp/866529).
Modifiche alle API
- Aggiungi
putIfAbsent
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772608) - Aggiungi
getOrDefault
aSimpleArrayMap
(aosp/772607) - Aggiungi l'argomento
remove
a due argomenti aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
. Ritira le estensioni KTX corrispondenti per questa funzionalità. (aosp/772482) - Aggiungi l'argomento
replace
a due argomenti aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772483) - Aggiungi l'argomento
replace
con tre argomenti aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772484) - Ritira i metodi
delete
ridondanti. Il metodoremove
offre la stessa API e la stessa funzionalità e corrisponde all'API utilizzata da Maps non specializzato. (aosp/866053)
Correzioni di bug
- Modifica
SimpleArrayMap
per sincronizzare la cache globale interna degli array suSimpleArrayMap.class
anziché suArrayMap.class
. Ciò garantisce che, se utilizzi soloSimpleArrayMap
,ArrayMap
possa essere rimosso dagli strumenti di riduzione del codice. (aosp/934557).
Versione 1.1.0-rc01
7 maggio 2019
Vengono rilasciate le versioni androidx.collection:collection:1.1.0-rc01
e androidx.collection:collection-ktx:1.1.0-rc01
. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Utilizza un'implementazione più efficiente per le funzioni
contains
eisNotEmpty
in "collection-ktx" artefatto. (aosp/866529).
Versione 1.1.0-beta01
3 aprile 2019
Vengono rilasciate le versioni androidx.collection:collection:1.1.0-beta01
e androidx.collection:collection-ktx:1.1.0-beta01
. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle API
- Il metodo indicato nelle note di rilascio alpha03 come modifica del valore
@RestrictTo
è stato rimosso. Era inutilizzato da nessuna libreria AndroidX (ora o storicamente) e non offriva alcuna funzionalità mancante dall'API pubblica.
Correzioni di bug
- Modifica
SimpleArrayMap
per sincronizzare la cache globale interna degli array suSimpleArrayMap.class
anziché suArrayMap.class
. Ciò garantisce che, se utilizzi soloSimpleArrayMap
,ArrayMap
possa essere rimosso dagli strumenti di riduzione del codice. (aosp/934557).
Versione 1.1.0-alpha03
13 marzo 2019
androidx.collection:collection:1.0.0-alpha03
e
Vengono rilasciati androidx.collection:collection-ktx:1.0.0-alpha03
.
L'elenco completo dei commit inclusi in questa versione è disponibile
qui
Modifiche alle API
- Un metodo su
ArraySet
contrassegnato in precedenza@RestrictTo(LIBRARY_GROUP)
era modificato in@RestrictTo(LIBRARY_GROUP_PREFIX)
. allo scopo di supportare il traffico da parte di altre librerie AndroidX che ora si trovano in ID gruppo Maven diversi. Questo verrà reso pubblico o rimosso in 1.1.0-alpha04 perché Le librerie AndroidX non devono ricevere API speciali che altri sviluppatori non ricevono.
Versione 1.1.0-alpha02
30 gennaio 2019
androidx.collection:collection 1.1.0-alpha02
e
Vengono rilasciati androidx.collection:collection-ktx 1.1.0-alpha02
.
Modifiche alle API
- Ritira i metodi
delete
ridondanti. Il metodoremove
offre la stessa API e la stessa funzionalità e corrisponde all'API utilizzata da Maps non specializzato. (aosp/866053)
Versione 1.1.0-alpha01
3 dicembre 2018
Modifiche alle API
- Aggiungi
putIfAbsent
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772608) - Aggiungi
getOrDefault
aSimpleArrayMap
(aosp/772607) - Aggiungi l'argomento
remove
a due argomenti aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
. Ritira le estensioni KTX corrispondenti per questa funzionalità. (aosp/772482) - Aggiungi l'argomento
replace
a due argomenti aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772483) - Aggiungi l'argomento
replace
con tre argomenti aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772484)