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
10 luglio 2024 1.4.1 - - -

Dichiarazione delle dipendenze

Per aggiungere una dipendenza alla raccolta, devi aggiungere il Repository Maven di Google al 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.1"
    implementation "androidx.collection:collection:$collection_version"
}

Kotlin

dependencies {
    val collection_version = "1.4.1"
    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. Facci sapere se scopri nuovi problemi o hai idee per migliorare questa raccolta. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a stella.

Crea un nuovo numero

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 1.4

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 List-like

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'impostazione errata dei 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 List-like

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, .indexOf(), .indexOfNull() e .indexOfValue(), sono state rese private. Questa modifica tecnicamente è incompatibile con i programmi binari, ma riflette la visibilità prevista di questi campi ed è il valore più vicino che possiamo ottenere in Kotlin poiché non include un modo per specificare la visibilità privata del pacchetto.
    • La nullità di alcuni tipi è ora definita correttamente. I metodi interessati sono: .getOrDefault, .keyAt, .valueAt, .setValueAt, .put, .putIfAbsent, .removeAt, .replace.
    • Per gli utenti 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 "non-null", che in precedenza non era possibile 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 sia come proprietà che come funzioni. Tuttavia, per ridurre i duplicati mantenendo la compatibilità binaria, era necessario rimuoverli, 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 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ù null in modo errato 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 in precedenza mancavano.

    • .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 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 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 nell'artefatto 'collection-ktx'. (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

Vengono rilasciate le funzionalità 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). per 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 perché le altre librerie AndroidX non dovrebbero ricevere API speciali che altri sviluppatori non ricevono.

Versione 1.1.0-alpha02

30 gennaio 2019

Vengono rilasciate le funzionalità androidx.collection:collection 1.1.0-alpha02 e 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)