Raccolta
Aggiornamento più recente | Release stabile | Candidato per la release | Versione beta | Release alpha |
---|---|---|---|---|
24 gennaio 2024 | 1.4.0 | - | - | - |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza alla raccolta, devi aggiungere il Repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il Repository Maven di Google.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle
per
l'app o il modulo:
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") }
Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 1.4
Versione 1.4.0
24 gennaio 2024
androidx.collection:collection-*:1.4.0
viene rilasciato. 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 simile a una mappaMutableScatterSet
eScatterSet
- Corsi conMutableSet
e API Set-likeMutableObjectList
eObjectList
- Corsi conMutableList
e API di tipo Elenco
Ad esempio, una mappa con una chiave di numero intero e un valore di tipo di riferimento è un IntObjectMap<T>
. Una mappa con una chiave lunga e un valore float è un 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
androidx.collection:collection-*:1.4.0-beta02
viene rilasciato. 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
androidx.collection:collection-*:1.4.0-beta01
viene rilasciato. La versione 1.4.0-beta01 contiene questi commit.
Correzioni di bug
- Correzione dell'impostazione errata dei valori di
ListIterator
inObjectList
che avrebbe potuto causare un arresto anomalo a causa diIndexOutOfBoundsException
. (I3bd8a, b/307049391).
Versione 1.4.0-alpha02
18 ottobre 2023
androidx.collection:collection-*:1.4.0-alpha02
viene rilasciato. 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 modalità incorporate. Ciò garantisce che non venga allocato il lambda perremoveIf
.
Versione 1.4.0-alpha01
4 ottobre 2023
androidx.collection:collection-*:1.4.0-alpha01
viene rilasciato. La versione 1.4.0-alpha01 contiene questi commit.
Nuove funzionalità
Sono state aggiunte nuove raccolte ad alta efficienza con un overhead di allocazione basso e un rendimento elevato:
MutableScatterMap
eScatterMap
- Corsi conMutableMap
e API simile a una mappaMutableScatterSet
eScatterSet
- Corsi conMutableSet
e API Set-likeMutableObjectList
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 un[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 un[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 un[Int|Float|Long|Object][Int|Float|Long|Object]Map
di sola lettura. Ad esempio, una mappa con una chiave di numero intero e un valore di tipo di riferimento è unIntObjectMap<T>
. Una mappa con una chiave lunga e un valore float è unLongFloatMap
. Non esiste una versione con il nomeObjectObjectMap
perché è coperta daScatterMap/MutableScatterMap
.
Versione 1.3.0
Versione 1.3.0
4 ottobre 2023
androidx.collection:collection-*:1.3.0
viene rilasciato. 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 non Android delle Raccolte sono ancora sperimentali, ma abbiamo deciso di unire le versioni per consentire agli sviluppatori di provarle più facilmente.
- L'intera origine è stata migrata a Kotlin. Nell'ambito di questa modifica, molte API sono ora digitate correttamente per il campo null e alcuni membri privati del pacchetto sono diventati
internal
. Di seguito è disponibile un elenco delle modifiche esatte nelle note di rilascio minori per la versione 1.3.x. - Insieme alla migrazione di Kotlin,
collection-ktx
è stato unito all'artefatto principale della raccolta. Puoi tranquillamente eliminare qualsiasi dipendenza sucollection:collection-ktx
a favore dicollection:collection
perché ora il campocollection-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
androidx.collection:collection-*:1.3.0-beta01
viene rilasciato. La versione 1.3.0-beta01 contiene questi commit.
Versione 1.3.0-alpha04
24 marzo 2023
androidx.collection:collection-*:1.3.0-alpha04
viene rilasciato.
Correzioni di bug
- Rimossi i vincoli di dipendenza dagli artefatti Maven per risolvere un problema di build nelle destinazioni native di Kotlin (b/274786186, KT-57531).
Versione 1.3.0-alpha03
22 marzo 2023
androidx.collection:collection-*:1.3.0-alpha03
viene rilasciato. La versione 1.3.0-alpha03 contiene questi commit.
Nuove funzionalità
- Ora puoi utilizzare le raccolte nei progetti KMM. Tieni presente che i target non Android delle Raccolte sono ancora in fase sperimentale, 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 è sempre stato incluso solo per garantire la compatibilità con Java. Gli utenti Kotlin in genere devono utilizzare gli helper.toTypedArray
di stdlib, che forniscono la stessa funzionalità esatta con una maggiore sicurezza dei tipi. (I2c59b).
Versione 1.3.0-alpha02
27 luglio 2022
androidx.collection:collection:1.3.0-alpha02
e androidx.collection:collection-ktx:1.3.0-alpha02
vengono rilasciati. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche alle API
SparseArrayCompat
è ora disponibile per le piattaforme non JVM dall'elemento 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
androidx.collection:collection:1.3.0-alpha01
e androidx.collection:collection-ktx:1.3.0-alpha01
vengono rilasciati. La versione 1.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stata eseguita la migrazione di
collection-ktx
estensioni nell'elemento principale delle raccolte,androidx.collection:collection
. Questa modifica rende le estensioni -ktx preesistenti accessibili agli utenti di Kotlin senza richiedere la dipendenza -ktx, mantenendo al contempo la compatibilità per gli utenti esistenti. Mantenere queste estensioni in un artefatto -ktx separato non è più vantaggioso poiché l'artefatto principale è stato spostato a Kotlin. (I6eef2).
Modifiche alle API
ArraySet
ora estendeAbstractMutableCollection
e non implementa più direttamente l'interfaccia di raccolta. (If6da0, b/230860589).ArraySet
convertita in Kotlin. A causa della digitazione più restrittiva, 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)
- Le seguenti chiamate hanno il tipo restituito
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 questo consente ancora la sintassi degli operatori per.get(key)
, ma allinea meglio la superficie API diSparseArrayCompat
alle altre classi di 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 di Kotlin senza richiedere la dipendenza -ktx, mantenendo al contempo la compatibilità per gli utenti esistenti. Mantenere queste estensioni in un artefatto -ktx separato non è più vantaggioso poiché l'artefatto principale è stato spostato a Kotlin. (I8659a) - Converti
LongSparseArray
in Kotlin. Questa modifica aggiunge ai suoi tipi una nullità esplicita, che è una modifica compatibile con il programma binario, ma potrebbe causare incompatibilità di origine. 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 conseguenza dell'interoperabilità di Java-Kotlin e della capacità di definire correttamente la nullità dei tipi nell'origine.- Le API private del pacchetto,
.mSize
,.mArray
,.mHashes
,.indexOf()
,.indexOfNull()
e.indexOfValue()
, sono state rese private. Si tratta tecnicamente di una modifica non compatibile dal punto di vista binario, ma riflette la visibilità prevista di questi campi ed è la più precisa possibile in Kotlin poiché non include un modo per specificare la visibilità privata dei pacchetti. - La nullità di alcuni tipi è ora definita correttamente. I metodi interessati sono:
.getOrDefault
,.keyAt
,.valueAt
,.setValueAt
,.put
,.putIfAbsent
,.removeAt
,.replace
. - Per gli utenti di Kotlin,
.isEmpty()
è ora disponibile solo come funzione anziché anche tramite l'accesso alla proprietà. (I271b7, b/182813986).
- Le API private del pacchetto,
Converti
CircularArray
in Kotlin. Modifiche rilevanti:- Corregge la nullità dei suoi generici in modo che non sia null, che in precedenza era impossibile dichiarare, ma che è stata applicata in tutte le sue API pubbliche.
- A causa dell'interoperabilità Java di Kotlin, in precedenza era possibile accedere
a determinati metodi come proprietà o funzioni. Tuttavia, per ridurre i duplicati mantenendo al contempo la compatibilità binaria, era necessario rimuoverli, dal momento che si tratta di una modifica non compatibile con l'origine. Le chiamate
interessate 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 come proprietà o funzioni. Tuttavia, per ridurre la duplicazione pur mantenendo la compatibilità binaria, era necessario rimuoverli, il che è 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)A
SparseArrayCompat.valueAt()
viene aggiunta una piccola modifica del comportamento, che non restituisce più erroneamentenull
per le chiamate non inizializzate al di fuori dei limiti disize()
, ma entro la capacità iniziale fornita.Questa modifica introduce anche la nullità corretta per alcuni tipi che prima mancava.
.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
androidx.collection:collection:1.2.0
e androidx.collection:collection-ktx:1.2.0
vengono rilasciati. 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
androidx.collection:collection:1.2.0-rc01
e androidx.collection:collection-ktx:1.2.0-rc01
vengono rilasciati. 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
androidx.collection:collection:1.2.0-beta01
e androidx.collection:collection-ktx:1.2.0-beta01
vengono rilasciati. 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
androidx.collection:collection:1.2.0-alpha01
e androidx.collection:collection-ktx:1.2.0-alpha01
vengono rilasciati. 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
androidx.collection:collection:1.1.0
e androidx.collection:collection-ktx:1.1.0
vengono rilasciati. 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
nell'artefatto "collection-ktx". (aosp/866529)
Modifiche alle API
- Aggiungi
putIfAbsent
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772608) - Aggiungi
getOrDefault
aSimpleArrayMap
(aosp/772607) - Aggiungi due argomenti
remove
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
. Ritira le estensioni KTX corrispondenti per questa funzionalità. (aosp/772482) - Aggiungi due argomenti
replace
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772483) - Aggiungi tre argomenti
replace
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
. In questo modo, se utilizzi soloSimpleArrayMap
, gli strumenti di riduzione del codice potranno rimuovereArrayMap
. (aosp/934557)
Versione 1.1.0-rc01
7 maggio 2019
androidx.collection:collection:1.1.0-rc01
e androidx.collection:collection-ktx:1.1.0-rc01
vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Utilizza un'implementazione più efficiente per le funzioni
contains
eisNotEmpty
nell'artefatto "collection-ktx". (aosp/866529)
Versione 1.1.0-beta01
3 aprile 2019
androidx.collection:collection:1.1.0-beta01
e androidx.collection:collection-ktx:1.1.0-beta01
vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle API
- Il metodo citato nelle note di rilascio alpha03 in quanto il suo valore di
@RestrictTo
è stato modificato è stato rimosso. Non era utilizzato da alcuna libreria AndroidX (ora o storicamente) e non offriva funzionalità mancanti dall'API pubblica.
Correzioni di bug
- Modifica
SimpleArrayMap
per sincronizzare la cache globale interna degli array suSimpleArrayMap.class
anziché suArrayMap.class
. In questo modo, se utilizzi soloSimpleArrayMap
, gli strumenti di riduzione del codice potranno rimuovereArrayMap
. (aosp/934557)
Versione 1.1.0-alpha03
13 marzo 2019
Vengono rilasciate le versioni androidx.collection:collection:1.0.0-alpha03
e
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 come@RestrictTo(LIBRARY_GROUP)
è stato modificato in@RestrictTo(LIBRARY_GROUP_PREFIX)
. allo scopo di supportare l'uso storico da parte di altre librerie AndroidX che ora si trovano in ID gruppo Maven diversi. Questo metodo verrà reso pubblico o rimosso nella versione 1.1.0-alpha04 in quanto le altre librerie AndroidX non dovrebbero ottenere API speciali che non sono disponibili per altri sviluppatori.
Versione 1.1.0-alpha02
30 gennaio 2019
Vengono rilasciate le versioni androidx.collection:collection 1.1.0-alpha02
e
androidx.collection:collection-ktx 1.1.0-alpha02
.
Modifiche alle API
- Ritira i metodi
delete
ridondanti. I metodiremove
offrono la stessa API e la stessa funzionalità e corrispondono 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 due argomenti
remove
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
. Ritira le estensioni KTX corrispondenti per questa funzionalità. (aosp/772482) - Aggiungi due argomenti
replace
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772483) - Aggiungi tre argomenti
replace
aLongSparseArray
,SimpleArrayMap
eSparseArrayCompat
(aosp/772484)