Sammlung
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
---|---|---|---|---|
24. Januar 2024 | 1.4.0 | - | - | - |
Abhängigkeiten deklarieren
Zum Hinzufügen einer Abhängigkeit von der Collection müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Groovig
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") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.4
Version 1.4.0
24. Januar 2024
androidx.collection:collection-*:1.4.0
wird freigegeben. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
Es wurden neue hocheffiziente Sammlungen zum Speichern von Primitiven ohne Boxen hinzugefügt:
MutableScatterMap
undScatterMap
– Klassen mitMutableMap
und kartenähnlicher APIMutableScatterSet
undScatterSet
– Klassen mitMutableSet
und der Set-ähnlichen APIMutableObjectList
undObjectList
– Klassen mitMutableList
und listenähnliche API
Eine Karte mit einem Ganzzahlschlüssel und einem Wert für den Referenztyp ist beispielsweise ein IntObjectMap<T>
. Eine Karte mit einem langen Schlüssel und einem Gleitkommawert ist ein LongFloatMap
. Es gibt keine Version mit dem Namen ObjectObjectMap
, da diese von ScatterMap/MutableScatterMap
abgedeckt ist.
Version 1.4.0-rc01
10. Januar 2024
androidx.collection:collection-*:1.4.0-rc01
wird ohne Änderungen veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
Version 1.4.0-beta02
29. November 2023
androidx.collection:collection-*:1.4.0-beta02
wird freigegeben. Version 1.4.0-beta02 enthält diese Commits.
Neue Funktionen
- Leistung von
FloatFloatPair
verbessert. (If5537)
Fehlerkorrekturen
ScatterMap.asMap()
-Iterator gibt jetzt neue Instanzen zurück (I28932, b/310365754).
Version 1.4.0-beta01
15. November 2023
androidx.collection:collection-*:1.4.0-beta01
wird freigegeben. Version 1.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Fehlerkorrektur für
ListIterator
, bei dem Werte inObjectList
falsch festgelegt wurden, was durchIndexOutOfBoundsException
zu einem Absturz führen konnte. (I3bd8a, b/307049391)
Version 1.4.0-alpha02
18. Oktober 2023
androidx.collection:collection-*:1.4.0-alpha02
wird freigegeben. Version 1.4.0-alpha02 enthält diese Commits.
API-Änderungen
- Zusätzliche Überlastung für
put
, die den vorherigen Wert zurückgibt, wenn er in allen primitiven Sammlungen ersetzt wird, z. B.FloatFloatMap
. removeIf
-Methoden in primitiven Sammlungen wieMutableFloatFloatMap
in Inline umwandeln Dadurch wird sichergestellt, dass die Lambda-Funktion fürremoveIf
nicht zugewiesen wird.
Version 1.4.0-alpha01
4. Oktober 2023
androidx.collection:collection-*:1.4.0-alpha01
wird freigegeben. Version 1.4.0-alpha01 enthält diese Commits.
Neue Funktionen
Es wurden neue hocheffiziente Sammlungen mit geringem Zuweisungsaufwand und hoher Leistung hinzugefügt:
MutableScatterMap
undScatterMap
– Klassen mitMutableMap
und kartenähnlicher APIMutableScatterSet
undScatterSet
– Klassen mitMutableSet
und der Set-ähnlichen APIMutableObjectList
undObjectList
– Klassen mitMutableList
und listenähnliche API
Es wurden neue hocheffiziente Sammlungen zum Speichern von Primitiven ohne Boxen hinzugefügt:
Mutable[Int|Float|Long]List
: Klassen mit einerMutableList<Int|Float|Long>
-ähnlichen API. Das schreibgeschützte[Int|Float|Long]List
ist auch vorhanden. Ganzzahlen können beispielsweise in einemIntList
enthalten sein.Mutable[Int|Float|Long]Set
: Klassen mit einerMutableSet<Int|Float|Long>
-ähnlichen API. Das schreibgeschützte[Int|Float|Long]Set
ist auch vorhanden. Zum Beispiel können Ganzzahlen in einem IntSet enthalten sein.Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map
: Klassen mit einerMutable<Int|Float|Long,T, Int|Float|Long|T>
-ähnlichen API. Das schreibgeschützte[Int|Float|Long|Object][Int|Float|Long|Object]Map
ist auch vorhanden. Eine Karte mit einem Ganzzahlschlüssel und einem Wert für den Referenztyp ist beispielsweise einIntObjectMap<T>
. Eine Karte mit einem langen Schlüssel und einem Gleitkommawert ist einLongFloatMap
. Es gibt keine Version mit dem NamenObjectObjectMap
, da diese vonScatterMap/MutableScatterMap
abgedeckt ist.
Version 1.3.0
Version 1.3.0
4. Oktober 2023
androidx.collection:collection-*:1.3.0
wird freigegeben. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.2.0
- Sie können Sammlungen jetzt in Kotlin-Multiplattform-Projekten verwenden. Hinweis: Nicht-Android-Ziele von Sammlungen befinden sich noch in der Testphase. Wir haben jedoch beschlossen, Versionen zusammenzuführen, um Entwicklern das Ausprobieren zu erleichtern.
- Alle Quellen wurden zu Kotlin migriert. Im Rahmen dieser Änderung werden viele APIs nun ordnungsgemäß auf Null-Zulässigkeit geprüft und einige private Paketmitglieder wurden zu
internal
. Eine Liste der genauen Änderungen finden Sie in den folgenden kleineren Versionshinweisen für 1.3.x. - Im Rahmen der Kotlin-Migration wurde
collection-ktx
mit dem Hauptsammlungsartefakt zusammengeführt. Sie können alle Abhängigkeiten voncollection:collection-ktx
zugunsten voncollection:collection
löschen, dacollection-ktx
jetzt leer ist.
Version 1.3.0-rc01
6. September 2023
androidx.collection:collection-*:1.3.0-rc01
wird ohne Änderungen veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
Version 1.3.0-beta01
9. August 2023
androidx.collection:collection-*:1.3.0-beta01
wird freigegeben. Version 1.3.0-beta01 enthält diese Commits.
Version 1.3.0-alpha04
24. März 2023
androidx.collection:collection-*:1.3.0-alpha04
wird freigegeben.
Fehlerkorrekturen
- Abhängigkeitseinschränkungen aus Maven-Artefakten wurden entfernt, um ein Build-Problem in nativen Kotlin-Zielen zu umgehen (b/274786186 und KT-57531).
Version 1.3.0-alpha03
22. März 2023
androidx.collection:collection-*:1.3.0-alpha03
wird freigegeben. Version 1.3.0-alpha03 enthält diese Commits.
Neue Funktionen
- Sie können Sammlungen jetzt in KMM-Projekten verwenden. Hinweis: Nicht-Android-Ziele von Sammlungen befinden sich noch in der Testphase. Wir haben jedoch beschlossen, Versionen zusammenzuführen, um Entwicklern das Ausprobieren zu erleichtern.
API-Änderungen
ArraySet
implementiert jetztMutableCollections
anstelle vonAbstractMutableCollection
, um eine speichereffizientere Implementierung vontoArray
(I1ac32) zu ermöglichen.
Fehlerkorrekturen
ArraySet.toArray
ist jetzt nur noch auf der JVM verfügbar, da es immer nur aus Gründen der Kompatibilität mit Java enthalten war. Kotlin-Nutzer sollten in der Regel stattdessen die.toTypedArray
-Helper von stdlib verwenden, die genau die gleiche Funktionalität mit zusätzlicher Typensicherheit bieten. (I2c59b)
Version 1.3.0-alpha02
27. Juli 2022
androidx.collection:collection:1.3.0-alpha02
und androidx.collection:collection-ktx:1.3.0-alpha02
werden veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
API-Änderungen
SparseArrayCompat
ist jetzt für Nicht-JVM-Plattformen aus dem allgemeinen Artefakt verfügbar (Ic9bd0, b/219589118, b/228347315).CircularIntArray
ist jetzt für Nicht-JVM-Plattformen aus dem allgemeinen Artefakt verfügbar (I3d8ef, b/228344943).LongSparseArray
ist jetzt für Nicht-JVM-Plattformen aus dem allgemeinen Artefakt verfügbar (I73149, b/228347315).
Version 1.3.0-alpha01
29. Juni 2022
androidx.collection:collection:1.3.0-alpha01
und androidx.collection:collection-ktx:1.3.0-alpha01
werden veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
Neue Funktionen
collection-ktx
Erweiterungen wurden zum Hauptsammlungsartefaktandroidx.collection:collection
migriert. Durch diese Änderung können Kotlin-Nutzer auf die vorhandenen -ktx-Erweiterungen zugreifen, ohne dass die -ktx-Abhängigkeit erforderlich ist. Bestehende Nutzer können gleichzeitig weiterhin mit ihnen kompatibel sein. Die Verwaltung dieser Erweiterungen in einem separaten -ktx-Artefakt ist nicht mehr von Vorteil, da das Hauptartefakt nach Kotlin verschoben wurde. (I6eef2)
API-Änderungen
ArraySet
erweitert jetztAbstractMutableCollection
und implementiert nicht mehr direkt die Sammlungsoberfläche. (If6da0, b/230860589)ArraySet
wurde in Kotlin konvertiert. Aufgrund einer strikteren Eingabe werden einige Kotlin-Aufrufe möglicherweise nicht mehr kompiliert. (Id68c1, b/230860589)- Die folgenden Aufrufe haben den Argumenttyp
T
, nichtT?
:ArraySet<T>.contains(null)
ArraySet<T>.add(null)
ArraySet<T>.remove(null)
- Die folgenden Aufrufe haben den Rückgabetyp
T?
, nichtT!
:ArraySet<T?>.valueAt(n)
ArraySet<T?>.removeAt(n)
ArraySet<T?>().iterator().next()
- Folgende Aufrufe sind über Kotlin nicht mehr möglich:
set.toArray()
–set.toTypedArray()
verwendenset.toArray(array)
–set.forEachIndexed(array::set)
verwenden
- Die folgenden Aufrufe haben den Argumenttyp
- Kombinieren Sie den überlasteten Konstruktor für
SparseArrayCompat
als optionales Argument für Kotlin-Nutzer. (If8407, b/227474719) - Operatorsyntax für
SparseArrayCompat.get(key, defaultValue).
entfernt. Beachten Sie, dass auch die Operatorsyntax für.get(key)
weiterhin zulässig ist, aber die API-Oberfläche vonSparseArrayCompat
besser an die anderen Klassen in dieser Bibliothek ausgerichtet wird. (I9a38d) - Migrieren Sie
LongSparseArray
-Erweiterungen in das Hauptartefakt „androidx.collection:collection“. Durch diese Änderung können Kotlin-Nutzer auf die vorhandenen -ktx-Erweiterungen zugreifen, ohne dass die -ktx-Abhängigkeit erforderlich ist. Bestehende Nutzer können gleichzeitig weiterhin mit ihnen kompatibel sein. Die Verwaltung dieser Erweiterungen in einem separaten -ktx-Artefakt ist nicht mehr von Vorteil, da das Hauptartefakt nach Kotlin verschoben wurde. (I8659a) - Konvertiere
LongSparseArray
in Kotlin. Durch diese Änderung werden die Typen explizit mit Nullen gekennzeichnet. Dies ist eine binär kompatible Änderung, kann jedoch zu Inkompatibilitäten von Quellen führen. Insbesondere: *.isEmpty
kann nicht mehr als Attribut aufgerufen werden. Der Zugriff darauf muss als Funktionsaufruf in Kotlin –.isEmpty()
(Idfd0f) erfolgen. - Konvertiere
SimpleArrayMap
in Kotlin. Mit dieser Änderung werden einige nicht kompatible Änderungen eingeführt, die auf die Java-Kotlin-Interop und die Möglichkeit zurückzuführen sind, die Null-Werte von Typen in der Quelle korrekt zu definieren.- Die privaten Paket-APIs
.mSize
,.mArray
,.mHashes
,.indexOf()
,.indexOfNull()
und.indexOfValue()
wurden als privat gekennzeichnet. Dies ist technisch gesehen eine inkompatible Änderung mit Binärprogrammen, spiegelt jedoch die beabsichtigte Sichtbarkeit dieser Felder wider und ist in Kotlin am ehesten möglich, da sie keine Möglichkeit bietet, die Sichtbarkeit von „package-private“ anzugeben. - Die NULL-Werte einiger Typen sind jetzt korrekt definiert. Folgende Methoden sind betroffen:
.getOrDefault
,.keyAt
,.valueAt
,.setValueAt
,.put
,.putIfAbsent
,.removeAt
,.replace
. - Für Kotlin-Nutzer ist
.isEmpty()
jetzt nur noch als Funktion und nicht zusätzlich über den Attributzugriff verfügbar. (I271b7, b/182813986)
- Die privaten Paket-APIs
Konvertiere
CircularArray
in Kotlin. Wichtige Änderungen:- Korrigiert die NULL-Werte seiner generischen Elemente auf nicht null, was zuvor nicht deklariert werden konnte, aber in allen öffentlichen APIs erzwungen wurde.
- Aufgrund der Java-Interoperabilität von Kotlin war es bisher möglich, auf bestimmte Methoden sowohl als Attribute als auch als Funktionen zuzugreifen. Um Duplikate zu reduzieren und gleichzeitig die Binärkompatibilität aufrechtzuerhalten, mussten diese entfernt werden. Dies ist eine quelleninkompatible Änderung. Folgende Aufrufe sind betroffen:
.isEmpty
,.getLast()
und.getFirst()
. Ifffac
Konvertiere
CircularIntArray
in Kotlin. Aufgrund der Java-Interoperabilität von Kotlin war es bisher möglich, auf bestimmte Methoden sowohl als Eigenschaften als auch als Funktion zuzugreifen. Um Duplikate zu reduzieren und gleichzeitig die Binärkompatibilität aufrechtzuerhalten, mussten diese entfernt werden. Dies ist eine quelleninkompatible Änderung. Betroffene Aufrufe:.isEmpty
,.getLast()
und.getFirst()
. (Ie36ce)LruCache
in Kotlin konvertieren (Ia2f19)Konvertiere
SparseArrayCompat
in Kotlin. (If6fe8)SparseArrayCompat.valueAt()
wird eine kleine Verhaltensänderung hinzugefügt, die nicht mehr fälschlicherweisenull
für nicht initialisierte Aufrufe außerhalb des Bereichs vonsize()
, aber innerhalb der angegebenen Anfangskapazität zurückgibt.Mit dieser Änderung wird außerdem für einige Typen die korrekte Nullität eingeführt, die zuvor fehlte.
.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)
Version 1.2.0
Version 1.2.0
1. Dezember 2021
androidx.collection:collection:1.2.0
und androidx.collection:collection-ktx:1.2.0
werden veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
- Fügen Sie
ArraySet
einen Array-Konstruktor hinzu. (Id7f19) entrySet()
API-konform machen, indem SieentrySet().toArray()
,remove()
,removeAll()
undretainAll()
implementieren und die Implementierung vonentrySet().addAll()
(I5d505) entfernen
Version 1.2.0-rc01
17. November 2021
androidx.collection:collection:1.2.0-rc01
und androidx.collection:collection-ktx:1.2.0-rc01
werden veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
API-Änderungen
- Keine Änderungen gegenüber der vorherigen Betaversion.
Version 1.2.0-beta01
13. Oktober 2021
androidx.collection:collection:1.2.0-beta01
und androidx.collection:collection-ktx:1.2.0-beta01
werden veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Fehlerkorrekturen
entrySet()
API-konform machen, indem SieentrySet().toArray()
,remove()
,removeAll()
undretainAll()
implementieren und die Implementierung vonentrySet().addAll()
(I5d505) entfernen
Version 1.2.0-alpha01
16. Dezember 2020
androidx.collection:collection:1.2.0-alpha01
und androidx.collection:collection-ktx:1.2.0-alpha01
werden veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.
API-Änderungen
- Fügen Sie
ArraySet
einen Array-Konstruktor hinzu. (Id7f19)
Version 1.1.0
Version 1.1.0
5. Juni 2019
androidx.collection:collection:1.1.0
und androidx.collection:collection-ktx:1.1.0
werden veröffentlicht. Die in Version 1.1.0 enthaltenen Commits finden Sie hier.
Nachfolgend finden Sie eine Zusammenfassung der Änderungen von 1.0.0 zu 1.1.0:
Neue Funktionen
- Effizientere Implementierung der Funktionen
contains
undisNotEmpty
im Artefakt „collection-ktx“ verwenden. (aosp/866529)
API-Änderungen
putIfAbsent
zuLongSparseArray
,SimpleArrayMap
undSparseArrayCompat
hinzufügen (aosp/772608)getOrDefault
zuSimpleArrayMap
hinzufügen (aosp/772607)- Fügen Sie
LongSparseArray
,SimpleArrayMap
undSparseArrayCompat
die beiden Argumenteremove
hinzu. Stellen Sie die entsprechenden KTX-Erweiterungen für diese Funktion ein. (aosp/772482) - Fügen Sie
LongSparseArray
,SimpleArrayMap
undSparseArrayCompat
die zwei Argumentereplace
hinzu (aosp/772483). - Fügen Sie
LongSparseArray
,SimpleArrayMap
undSparseArrayCompat
mit drei Argumentenreplace
(aosp/772484) hinzu. - Redundante
delete
-Methoden werden eingestellt. Die Methoderemove
bietet dieselbe API und dieselben Funktionen und entspricht der API, die von nicht spezialisierten Karten verwendet wird. (aosp/866053)
Fehlerkorrekturen
- Ändern Sie
SimpleArrayMap
, um den internen globalen Cache von Arrays aufSimpleArrayMap.class
anstelle vonArrayMap.class
zu synchronisieren. Wenn Sie nurSimpleArrayMap
verwenden, kannArrayMap
dadurch mit Tools zum Verkleinern des Codes entfernt werden. (aosp/934557)
Version 1.1.0-rc01
7. Mai 2019
androidx.collection:collection:1.1.0-rc01
und androidx.collection:collection-ktx:1.1.0-rc01
werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Effizientere Implementierung der Funktionen
contains
undisNotEmpty
im Artefakt „collection-ktx“ verwenden. (aosp/866529)
Version 1.1.0-beta01
3. April 2019
androidx.collection:collection:1.1.0-beta01
und androidx.collection:collection-ktx:1.1.0-beta01
werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Die Methode, die in den Versionshinweisen zu Alpha03 mit der Änderung des Werts
@RestrictTo
angegeben wurde, wurde entfernt. Sie wurde von keiner AndroidX-Bibliothek (jetzt oder in der Vergangenheit) verwendet und bot keine Funktionen, die in der öffentlichen API gefehlt haben.
Fehlerkorrekturen
- Ändern Sie
SimpleArrayMap
, um den internen globalen Cache von Arrays aufSimpleArrayMap.class
anstelle vonArrayMap.class
zu synchronisieren. Wenn Sie nurSimpleArrayMap
verwenden, kannArrayMap
dadurch mit Tools zum Verkleinern des Codes entfernt werden. (aosp/934557)
Version 1.1.0-alpha03
13. März 2019
androidx.collection:collection:1.0.0-alpha03
und androidx.collection:collection-ktx:1.0.0-alpha03
werden freigegeben.
Die vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Eine Methode für
ArraySet
, die zuvor als@RestrictTo(LIBRARY_GROUP)
markiert war, wurde in@RestrictTo(LIBRARY_GROUP_PREFIX)
geändert. Damit soll die frühere Verwendung durch andere AndroidX-Bibliotheken unterstützt werden, die sich jetzt in verschiedenen Maven-Gruppen-IDs befinden. Diese Methode wird in 1.1.0-alpha04 entweder veröffentlicht oder entfernt, da andere AndroidX-Bibliotheken keine speziellen APIs erhalten sollen, die andere Entwickler nicht nutzen.
Version 1.1.0-alpha02
30. Januar 2019
androidx.collection:collection 1.1.0-alpha02
und androidx.collection:collection-ktx 1.1.0-alpha02
werden freigegeben.
API-Änderungen
- Redundante
delete
-Methoden werden eingestellt. Die Methodenremove
bieten dieselbe API und dieselben Funktionen und entsprechen der API, die von nicht spezialisierten Karten verwendet wird. (aosp/866053)
Version 1.1.0-alpha01
3. Dezember 2018
API-Änderungen
putIfAbsent
zuLongSparseArray
,SimpleArrayMap
undSparseArrayCompat
hinzufügen (aosp/772608)getOrDefault
zuSimpleArrayMap
hinzufügen (aosp/772607)- Fügen Sie
LongSparseArray
,SimpleArrayMap
undSparseArrayCompat
die beiden Argumenteremove
hinzu. Stellen Sie die entsprechenden KTX-Erweiterungen für diese Funktion ein. (aosp/772482) - Fügen Sie
LongSparseArray
,SimpleArrayMap
undSparseArrayCompat
die zwei Argumentereplace
hinzu (aosp/772483). - Fügen Sie
LongSparseArray
,SimpleArrayMap
undSparseArrayCompat
mit drei Argumentenreplace
(aosp/772484) hinzu.