Raccolta

  
Riduci l'impatto sulla memoria delle raccolte esistenti e nuove di dimensioni ridotte.
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:

Trendy

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.

Crea un nuovo problema

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 e ScatterMap - Corsi con MutableMap e API simile a una mappa
  • MutableScatterSet e ScatterSet - Corsi con MutableSet e API Set-like
  • MutableObjectList e ObjectList - Corsi con MutableList 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

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 in ObjectList che avrebbe potuto causare un arresto anomalo a causa di IndexOutOfBoundsException. (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, come FloatFloatMap.
  • Converti i metodi removeIf su raccolte primitive, come MutableFloatFloatMap in modalità incorporate. Ciò garantisce che non venga allocato il lambda per removeIf.

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 e ScatterMap - Corsi con MutableMap e API simile a una mappa
  • MutableScatterSet e ScatterSet - Corsi con MutableSet e API Set-like
  • MutableObjectList e ObjectList - Corsi con MutableList 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 tipo MutableList<Int|Float|Long>. Esiste anche un [Int|Float|Long]List di sola lettura. Ad esempio, i numeri interi possono essere contenuti in un IntList.
  • Mutable[Int|Float|Long]Set: classi con API di tipo MutableSet<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 tipo Mutable<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 è 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.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 su collection:collection-ktx a favore di collection:collection perché ora il campo collection-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 implementa MutableCollections anziché AbstractMutableCollection per consentire un'implementazione più efficiente in termini di memoria di toArray (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 estende AbstractMutableCollection 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, non T?:
      • ArraySet<T>.contains(null)
      • ArraySet<T>.add(null)
      • ArraySet<T>.remove(null)
    • Le seguenti chiamate hanno il tipo restituito T?, non T!:
      • ArraySet<T?>.valueAt(n)
      • ArraySet<T?>.removeAt(n)
      • ArraySet<T?>().iterator().next()
    • Le seguenti chiamate non sono più possibili da Kotlin:
      • set.toArray() - utilizza set.toTypedArray()
      • set.toArray(array) - utilizza set.forEachIndexed(array::set)
  • 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 di SparseArrayCompat 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).
  • 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ù erroneamente null per le chiamate non inizializzate al di fuori dei limiti di size(), 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() implementando entrySet().toArray(), remove(), removeAll() e retainAll() e rimuovendo l'implementazione di entrySet().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() implementando entrySet().toArray(), remove(), removeAll() e retainAll() e rimuovendo l'implementazione di entrySet().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 e isNotEmpty nell'artefatto "collection-ktx". (aosp/866529)

Modifiche alle API

  • Aggiungi putIfAbsent a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772608)
  • Aggiungi getOrDefault a SimpleArrayMap (aosp/772607)
  • Aggiungi due argomenti remove a LongSparseArray, SimpleArrayMap e SparseArrayCompat. Ritira le estensioni KTX corrispondenti per questa funzionalità. (aosp/772482)
  • Aggiungi due argomenti replace a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772483)
  • Aggiungi tre argomenti replace a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772484)
  • Ritira i metodi delete ridondanti. Il metodo remove 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 su SimpleArrayMap.class anziché su ArrayMap.class. In questo modo, se utilizzi solo SimpleArrayMap, gli strumenti di riduzione del codice potranno rimuovere ArrayMap. (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 e isNotEmpty 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 su SimpleArrayMap.class anziché su ArrayMap.class. In questo modo, se utilizzi solo SimpleArrayMap, gli strumenti di riduzione del codice potranno rimuovere ArrayMap. (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 metodi remove 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 a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772608)
  • Aggiungi getOrDefault a SimpleArrayMap (aosp/772607)
  • Aggiungi due argomenti remove a LongSparseArray, SimpleArrayMap e SparseArrayCompat. Ritira le estensioni KTX corrispondenti per questa funzionalità. (aosp/772482)
  • Aggiungi due argomenti replace a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772483)
  • Aggiungi tre argomenti replace a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772484)