Collection

  
Mengurangi dampak memori dari collection berukuran kecil, baik yang baru maupun yang sudah ada.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
29 Juni 2022 1.2.0 - - 1.3.0-alpha01

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada Collection, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

Groovy

dependencies {
    def collection_version = "1.2.0"

    // Java language implementation
    implementation "androidx.collection:collection:$collection_version"
    // Kotlin
    implementation "androidx.collection:collection-ktx:$collection_version"
}

Kotlin

dependencies {
    val collection_version = "1.2.0"

    // Java language implementation
    implementation("androidx.collection:collection:$collection_version")
    // Kotlin
    implementation("androidx.collection:collection-ktx:$collection_version")
}

Untuk mengetahui informasi dependensi selengkapnya, lihat Menambahkan Dependensi Build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.3.0

Versi 1.3.0-alpha01

29 Juni 2022

androidx.collection:collection:1.3.0-alpha01 dan androidx.collection:collection-ktx:1.3.0-alpha01 dirilis. Versi 1.3.0-alpha01 berisi commit berikut.

Fitur Baru

  • Ekstensi collection-ktx telah dimigrasikan ke artefak koleksi utama, androidx.collection:collection. Perubahan ini membuat ekstensi -ktx yang sudah ada dapat diakses oleh pengguna Kotlin tanpa memerlukan dependensi -ktx, sambil tetap mempertahankan kompatibilitas untuk pengguna yang ada. Mempertahankan ekstensi ini dalam artefak -ktx terpisah tidak lagi bermanfaat karena artefak utama telah dipindahkan ke Kotlin. (I6eef2)

Perubahan API

  • ArraySet sekarang memperluas AbstractMutableCollection dan tidak lagi secara langsung menerapkan antarmuka Collection. (If6da0, b/230860589)
  • ArraySet telah dikonversikan ke Kotlin. Karena pengetikan yang lebih ketat, beberapa panggilan Kotlin mungkin tidak lagi dikompilasi. (Id68c1, b/230860589)
    • Panggilan berikut memiliki jenis argumen T, bukan T?:
      • ArraySet<T>.contains(null)
      • ArraySet<T>.add(null)
      • ArraySet<T>.remove(null)
    • Panggilan berikut memiliki jenis nilai yang ditampilkan T?, bukan T!:
      • ArraySet<T?>.valueAt(n)
      • ArraySet<T?>.removeAt(n)
      • ArraySet<T?>().iterator().next()
    • Panggilan berikut tidak lagi dapat dilakukan dari Kotlin:
      • set.toArray() - gunakan set.toTypedArray()
      • set.toArray(array) - gunakan set.forEachIndexed(array::set)
  • Menggabungkan konstruktor kelebihan beban untuk SparseArrayCompat sebagai argumen opsional bagi pengguna Kotlin. (If8407, b/227474719)
  • Menghapus sintaksis operator untuk SparseArrayCompat.get(key, defaultValue). Perlu diketahui bahwa hal ini masih memungkinkan sintaksis operator untuk .get(key), tetapi lebih menyelaraskan platform API SparseArrayCompat dengan class lain di library ini. (I9a38d)
  • Memigrasikan ekstensi LongSparseArray ke artefak utama, androidx.collection:collection. Perubahan ini membuat ekstensi -ktx yang sudah ada dapat diakses oleh pengguna Kotlin tanpa memerlukan dependensi -ktx, sambil tetap mempertahankan kompatibilitas untuk pengguna yang ada. Mempertahankan ekstensi ini dalam artefak -ktx terpisah tidak lagi bermanfaat karena artefak utama telah dipindahkan ke Kotlin. (I8659a)
  • Mengonversi LongSparseArray ke Kotlin. Perubahan ini menambahkan nullity eksplisit ke jenisnya, yang merupakan perubahan kompatibel biner, tetapi dapat menyebabkan sumber tidak kompatibel. Khususnya: * .isEmpty tidak dapat lagi diakses sebagai properti, properti tersebut harus diakses sebagai panggilan fungsi di Kotlin - .isEmpty() (Idfd0f)
  • Mengonversi SimpleArrayMap ke Kotlin. Perubahan ini memperkenalkan beberapa perubahan yang tidak kompatibel, sebagai hasil dari interop Java-Kotlin dan kemampuan untuk menentukan dengan benar jenis nullity dalam sumber.
    • API pribadi paket, .mSize, .mArray, .mHashes, .indexOf(), .indexOfNull(), dan .indexOfValue(), dijadikan pribadi - secara teknis ini adalah perubahan tidak kompatibel biner, tetapi mencerminkan visibilitas yang diinginkan dari kolom ini, dan ini hasil paling mendekati yang dapat dicapai di Kotlin karena tidak menyertakan cara untuk menentukan visibilitas pribadi paket.
    • Nullity beberapa jenis sekarang ditentukan dengan benar, metode yang terpengaruh adalah: .getOrDefault, .keyAt, .valueAt, .setValueAt, .put, .putIfAbsent, .removeAt, .replace.
    • Untuk pengguna Kotlin, .isEmpty() kini hanya tersedia sebagai fungsi, bukan melalui akses properti. (I271b7, b/182813986)
  • Mengonversi CircularArray ke Kotlin. Perubahan penting:

    • Memperbaiki nullity generiknya menjadi non-null, yang sebelumnya tidak mungkin untuk dideklarasikan, tetapi diterapkan di semua API publiknya.
    • Karena interop Java Kotlin, sebelumnya telah dimungkinkan untuk mengakses metode tertentu sebagai properti atau fungsi. Namun, untuk mengurangi duplikasi sekaligus mempertahankan kompatibilitas biner, Anda perlu menghapusnya, yang merupakan perubahan yang tidak kompatibel dengan sumber. Panggilan yang terpengaruh adalah: .isEmpty, .getLast(), dan .getFirst(). (Ifffac)
  • Mengonversi CircularIntArray ke Kotlin. Karena interop Java Kotlin, sebelumnya telah dimungkinkan untuk mengakses metode tertentu sebagai properti atau fungsi. Namun, untuk mengurangi duplikasi sekaligus mempertahankan kompatibilitas biner, Anda perlu menghapusnya, yang merupakan perubahan yang tidak kompatibel dengan sumber. Panggilan yang terpengaruh adalah: .isEmpty, .getLast(), dan .getFirst(). (Ie36ce)

  • Mengonversi LruCache ke Kotlin (Ia2f19)

  • Mengonversi SparseArrayCompat ke Kotlin. (If6fe8)

    Perubahan kecil pada perilaku ditambahkan ke SparseArrayCompat.valueAt(), yang tidak lagi salah menampilkan null untuk panggilan tidak diinisialisasi yang di luar batasan size(), tetapi dalam kapasitas awal yang disediakan.

    Perubahan ini juga memasukkan nullity yang benar untuk beberapa jenis yang sebelumnya tidak ada.

    • .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)

Versi 1.2.0

Versi 1.2.0

1 Desember 2021

androidx.collection:collection:1.2.0 dan androidx.collection:collection-ktx:1.2.0 dirilis. Versi 1.2.0 berisi commit berikut ini.

Perubahan penting sejak 1.1.0

  • Menambahkan konstruktor array ke ArraySet. (Id7f19)
  • Menyesuaikan entrySet() agar mematuhi API dengan mengimplementasikan entrySet().toArray(), remove(), removeAll(), dan retainAll(), serta menghapus implementasi entrySet().addAll() (I5d505)

Versi 1.2.0-rc01

17 November 2021

androidx.collection:collection:1.2.0-rc01 dan androidx.collection:collection-ktx:1.2.0-rc01 dirilis. Versi 1.2.0-rc01 berisi commit berikut.

Perubahan API

  • Tidak ada perubahan dari versi beta sebelumnya.

Versi 1.2.0-beta01

13 Oktober 2021

androidx.collection:collection:1.2.0-beta01 dan androidx.collection:collection-ktx:1.2.0-beta01 dirilis. Versi 1.2.0-beta01 berisi commit ini.

Perbaikan Bug

  • Menyesuaikan entrySet() agar mematuhi API dengan mengimplementasikan entrySet().toArray(), remove(), removeAll(), dan retainAll(), serta menghapus implementasi entrySet().addAll() (I5d505)

Versi 1.2.0-alpha01

16 Desember 2020

androidx.collection:collection:1.2.0-alpha01 dan androidx.collection:collection-ktx:1.2.0-alpha01 dirilis. Versi 1.2.0-alpha01 berisi commit ini.

Perubahan API

  • Menambahkan konstruktor array ke ArraySet. (Id7f19)

Versi 1.1.0

Versi 1.1.0

5 Juni 2019

androidx.collection:collection:1.1.0 dan androidx.collection:collection-ktx:1.1.0 dirilis. Commit yang disertakan dalam versi 1.1.0 dapat dilihat di sini.

Berikut adalah ringkasan perubahan dari 1.0.0 hingga 1.1.0:

Fitur baru

  • Menggunakan implementasi yang lebih efisien untuk fungsi contains dan isNotEmpty dalam artefak 'collection-ktx'. (aosp/866529)

Perubahan API

  • Menambahkan putIfAbsent ke LongSparseArray, SimpleArrayMap, dan SparseArrayCompat (aosp/772608)
  • Menambahkan getOrDefault ke SimpleArrayMap (aosp/772607)
  • Menambahkan remove dua argumen ke LongSparseArray, SimpleArrayMap, dan SparseArrayCompat. Menghentikan penggunaan ekstensi KTX yang terkait untuk fungsionalitas ini. (aosp/772482)
  • Menambahkan replace dua argumen ke LongSparseArray, SimpleArrayMap, dan SparseArrayCompat (aosp/772483)
  • Menambahkan replace tiga argumen ke LongSparseArray, SimpleArrayMap, dan SparseArrayCompat (aosp/772484 )
  • Menghentikan penggunaan metode delete yang redundan. Metode remove menawarkan API dan fungsionalitas yang sama serta cocok dengan API yang digunakan oleh Maps tak terspesialisasi. (aosp/866053)

Perbaikan bug

  • Mengubah SimpleArrayMap untuk menyinkronkan cache global internalnya yang terdiri dari array di SimpleArrayMap.class, bukan ArrayMap.class. Perubahan ini memastikan bahwa jika Anda hanya menggunakan SimpleArrayMap, ArrayMap dapat dihapus dengan alat penyingkatan kode. (aosp/934557)

Versi 1.1.0-rc01

7 Mei 2019

androidx.collection:collection:1.1.0-rc01 dan androidx.collection:collection-ktx:1.1.0-rc01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur baru

  • Menggunakan implementasi yang lebih efisien untuk fungsi contains dan isNotEmpty dalam artefak 'collection-ktx'. (aosp/866529)

Versi 1.1.0-beta01

3 April 2019

androidx.collection:collection:1.1.0-beta01 dan androidx.collection:collection-ktx:1.1.0-beta01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Perubahan API

  • Metode yang dalam catatan rilis alpha03 dikatakan mengalami perubahan nilai @RestrictTo telah dihapus. Metode tersebut tidak digunakan oleh library AndroidX mana pun (sekarang atau sebelumnya) dan tidak menawarkan fungsionalitas apa pun yang tidak disertakan dalam API publik.

Perbaikan bug

  • Mengubah SimpleArrayMap untuk menyinkronkan cache global internalnya yang terdiri dari array di SimpleArrayMap.class, bukan ArrayMap.class. Perubahan ini memastikan bahwa jika Anda hanya menggunakan SimpleArrayMap, ArrayMap dapat dihapus dengan alat penyingkatan kode. (aosp/934557)

Versi 1.1.0-alpha03

13 Maret 2019

androidx.collection:collection:1.0.0-alpha03 dan androidx.collection:collection-ktx:1.0.0-alpha03 dirilis. Daftar lengkap commit yang disertakan dalam versi ini dapat dilihat di sini.

Perubahan API

  • Metode di ArraySet yang sebelumnya ditandai @RestrictTo(LIBRARY_GROUP) diubah ke @RestrictTo(LIBRARY_GROUP_PREFIX). Perubahan ini ditujukan untuk mendukung penggunaan sebelumnya oleh library AndroidX lain yang sekarang berada di ID grup Maven berbeda. Metode ini akan dipublikasikan atau dihapus dalam 1.1.0-alpha04 karena library AndroidX lainnya tidak boleh mendapatkan API khusus yang tidak dimiliki developer lain.

Versi 1.1.0-alpha02

30 Januari 2019

androidx.collection:collection 1.1.0-alpha02 dan androidx.collection:collection-ktx 1.1.0-alpha02 dirilis.

Perubahan API

  • Menghentikan penggunaan metode delete yang redundan. Metode remove menawarkan API dan fungsionalitas yang sama serta cocok dengan API yang digunakan oleh Maps tak terspesialisasi. (aosp/866053)

Versi 1.1.0-alpha01

3 Desember 2018

Perubahan API

  • Menambahkan putIfAbsent ke LongSparseArray, SimpleArrayMap, dan SparseArrayCompat (aosp/772608)
  • Menambahkan getOrDefault ke SimpleArrayMap (aosp/772607)
  • Menambahkan remove dua argumen ke LongSparseArray, SimpleArrayMap, dan SparseArrayCompat. Menghentikan penggunaan ekstensi KTX yang terkait untuk fungsionalitas ini. (aosp/772482)
  • Menambahkan replace dua argumen ke LongSparseArray, SimpleArrayMap, dan SparseArrayCompat (aosp/772483)
  • Menambahkan replace tiga argumen ke LongSparseArray, SimpleArrayMap, dan SparseArrayCompat (aosp/772484 )