Raccolta

  
Riduci l'impatto sulla memoria delle raccolte esistenti e di quelle nuove di piccole dimensioni.
Aggiornamento più recente Release stabile Candidato per l'uscita Versione beta Release alpha
4 settembre 2024 1.4.3 - - 1.5.0-alpha01

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.

Crea un nuovo numero

Consulta la documentazione di Issue Tracker per ulteriori informazioni.

Versione 1.5

Versione 1.5.0-alpha01

4 settembre 2024

Viene rilasciato androidx.collection:collection-*:1.5.0-alpha01. La versione 1.5.0-alpha01 contiene questi commit.

Modifiche alle API

  • OrderedScatterSet è una nuova raccolta ordinata senza allocazione (Ic4178)
  • SieveCache è una nuova sostituzione di LruCache senza allocazione che offre caratteristiche migliori per il rapporto di risultati. (I50a17)
  • Rappresentazione interna packedValue esposta per IntIntPair e FloatFloatPair. (Ifeb75, b/331853566)
  • Aggiunta dell'accesso all'array di contenuti nelle raccolte di elenchi. (I899d5, b/333903173)
  • Aggiungi DoubleList, una struttura dati di tipo elenco ottimizzata per valori doppi. (Ia10d1, b/315127635)

Correzioni di bug

  • La raccolta delle raccolte sarà trasferita in modo da avere come target Kotlin 1.9 (I0782f)
  • Ottimizza molte delle raccolte per aumentare l'efficienza. (Ic0566)

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() e required() con varianti che non prevedono la generazione di eccezioni incorporate. Questo 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)

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 e linuxArm64. (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 e ScatterMap - Corsi con MutableMap e API Map-like
  • MutableScatterSet e ScatterSet - Corsi con MutableSet e API di tipo set
  • MutableObjectList e ObjectList - Corsi con MutableList 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

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 in ObjectList che poteva causare un arresto anomalo a causa di IndexOutOfBoundsException. (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, come FloatFloatMap.
  • Converti i metodi removeIf su raccolte primitive, come MutableFloatFloatMap, in linea. Ciò garantisce che la funzione lambda per removeIf 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 e ScatterMap - Corsi con MutableMap e API Map-like
  • MutableScatterSet e ScatterSet - Corsi con MutableSet e API di tipo set
  • 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 l'elemento [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 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 tipo Mutable<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 nome ObjectObjectMap perché è coperta da ScatterMap/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 su collection:collection-ktx a favore di collection:collection, poiché ora 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

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 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 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 estende AbstractMutableCollection 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, non T?:
        .
      • ArraySet<T>.contains(null)
      • ArraySet<T>.add(null)
      • ArraySet<T>.remove(null)
    • Il tipo restituito per le seguenti chiamate è 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 questa opzione consente comunque la sintassi dell'operatore per .get(key), ma allinea meglio la superficie API di SparseArrayCompat 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)
  • 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 incompatibile 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 errato null per chiamate non inizializzate su limiti di size(), 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() implementando entrySet().toArray(), remove(), removeAll() e retainAll() e rimuovendo l'implementazione di entrySet().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() implementando entrySet().toArray(), remove(), removeAll() e retainAll() e rimuovendo l'implementazione di entrySet().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 e isNotEmpty in "collection-ktx" artefatto. (aosp/866529).

Modifiche alle API

  • Aggiungi putIfAbsent a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772608)
  • Aggiungi getOrDefault a SimpleArrayMap (aosp/772607)
  • Aggiungi l'argomento remove a due argomenti a LongSparseArray, SimpleArrayMap e SparseArrayCompat. Ritira le estensioni KTX corrispondenti per questa funzionalità. (aosp/772482)
  • Aggiungi l'argomento replace a due argomenti a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772483)
  • Aggiungi l'argomento replace con tre argomenti 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. Ciò garantisce che, se utilizzi solo SimpleArrayMap, 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 e isNotEmpty 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 funzionalità mancanti nell'API pubblica.

Correzioni di bug

  • Modifica SimpleArrayMap per sincronizzare la cache globale interna degli array su SimpleArrayMap.class anziché su ArrayMap.class. Ciò garantisce che, se utilizzi solo SimpleArrayMap, 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 metodo remove 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 a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772608)
  • Aggiungi getOrDefault a SimpleArrayMap (aosp/772607)
  • Aggiungi l'argomento remove a due argomenti a LongSparseArray, SimpleArrayMap e SparseArrayCompat. Ritira le estensioni KTX corrispondenti per questa funzionalità. (aosp/772482)
  • Aggiungi l'argomento replace a due argomenti a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772483)
  • Aggiungi l'argomento replace con tre argomenti a LongSparseArray, SimpleArrayMap e SparseArrayCompat (aosp/772484)