Sammlung

  
Reduzieren Sie die Speicherauswirkungen vorhandener und neuer Sammlungen, die klein sind.
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.

Neues Problem erstellen

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 und ScatterMap – Klassen mit MutableMap und kartenähnlicher API
  • MutableScatterSet und ScatterSet – Klassen mit MutableSet und der Set-ähnlichen API
  • MutableObjectList und ObjectList – Klassen mit MutableList 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 in ObjectList falsch festgelegt wurden, was durch IndexOutOfBoundsException 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 wie MutableFloatFloatMap in Inline umwandeln Dadurch wird sichergestellt, dass die Lambda-Funktion für removeIf 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 und ScatterMap – Klassen mit MutableMap und kartenähnlicher API
  • MutableScatterSet und ScatterSet – Klassen mit MutableSet und der Set-ähnlichen API
  • MutableObjectList und ObjectList – Klassen mit MutableList und listenähnliche API

Es wurden neue hocheffiziente Sammlungen zum Speichern von Primitiven ohne Boxen hinzugefügt:

  • Mutable[Int|Float|Long]List: Klassen mit einer MutableList<Int|Float|Long>-ähnlichen API. Das schreibgeschützte [Int|Float|Long]List ist auch vorhanden. Ganzzahlen können beispielsweise in einem IntList enthalten sein.
  • Mutable[Int|Float|Long]Set: Klassen mit einer MutableSet<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 einer Mutable<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 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.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 von collection:collection-ktx zugunsten von collection:collection löschen, da collection-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 jetzt MutableCollections anstelle von AbstractMutableCollection, um eine speichereffizientere Implementierung von toArray (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 Hauptsammlungsartefakt androidx.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 jetzt AbstractMutableCollection 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, nicht T?:
      • ArraySet<T>.contains(null)
      • ArraySet<T>.add(null)
      • ArraySet<T>.remove(null)
    • Die folgenden Aufrufe haben den Rückgabetyp T?, nicht T!:
      • 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() verwenden
      • set.toArray(array)set.forEachIndexed(array::set) verwenden
  • 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 von SparseArrayCompat 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)
  • 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älschlicherweise null für nicht initialisierte Aufrufe außerhalb des Bereichs von size(), 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 Sie entrySet().toArray(), remove(), removeAll() und retainAll() implementieren und die Implementierung von entrySet().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 Sie entrySet().toArray(), remove(), removeAll() und retainAll() implementieren und die Implementierung von entrySet().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 und isNotEmpty im Artefakt „collection-ktx“ verwenden. (aosp/866529)

API-Änderungen

  • putIfAbsent zu LongSparseArray, SimpleArrayMap und SparseArrayCompat hinzufügen (aosp/772608)
  • getOrDefault zu SimpleArrayMap hinzufügen (aosp/772607)
  • Fügen Sie LongSparseArray, SimpleArrayMap und SparseArrayCompat die beiden Argumente remove hinzu. Stellen Sie die entsprechenden KTX-Erweiterungen für diese Funktion ein. (aosp/772482)
  • Fügen Sie LongSparseArray, SimpleArrayMap und SparseArrayCompat die zwei Argumente replace hinzu (aosp/772483).
  • Fügen Sie LongSparseArray, SimpleArrayMap und SparseArrayCompat mit drei Argumenten replace (aosp/772484) hinzu.
  • Redundante delete-Methoden werden eingestellt. Die Methode remove 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 auf SimpleArrayMap.class anstelle von ArrayMap.class zu synchronisieren. Wenn Sie nur SimpleArrayMap verwenden, kann ArrayMap 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 und isNotEmpty 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 auf SimpleArrayMap.class anstelle von ArrayMap.class zu synchronisieren. Wenn Sie nur SimpleArrayMap verwenden, kann ArrayMap 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 Methoden remove 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 zu LongSparseArray, SimpleArrayMap und SparseArrayCompat hinzufügen (aosp/772608)
  • getOrDefault zu SimpleArrayMap hinzufügen (aosp/772607)
  • Fügen Sie LongSparseArray, SimpleArrayMap und SparseArrayCompat die beiden Argumente remove hinzu. Stellen Sie die entsprechenden KTX-Erweiterungen für diese Funktion ein. (aosp/772482)
  • Fügen Sie LongSparseArray, SimpleArrayMap und SparseArrayCompat die zwei Argumente replace hinzu (aosp/772483).
  • Fügen Sie LongSparseArray, SimpleArrayMap und SparseArrayCompat mit drei Argumenten replace (aosp/772484) hinzu.