Koleksi
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
7 Agustus 2024 | 1.4.3 | - | - | - |
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.4.3" implementation "androidx.collection:collection:$collection_version" }
Kotlin
dependencies { val collection_version = "1.4.3" implementation("androidx.collection:collection:$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.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.4
Versi 1.4.3
7 Agustus 2024
androidx.collection:collection-*:1.4.3
dirilis. Versi 1.4.3 berisi commit ini.
Perbaikan Bug
- Perbaikan kerusakan yang dapat terjadi di
ScatterMap
,ScatterSet
, dan varian primitifnya. (I38a4a, b/352560465) - Pengoptimalan performa. Pada khususnya:
- Ganti panggilan ke
check()
danrequired()
dengan varian yang tidak inline dengan pengecualian. Ini mengurangi ukuran biner akhir dan, yang lebih penting, sedikit mengurangi tekanan i-cache. - Meningkatkan
removeDeletedMarkers()
di "sebar" kumpulan koleksi tertentu. Versi baru ini menghapus 8 penanda yang dihapus sekaligus dan melewati penulisan yang lebih mahal dalam prosesnya. (Ic0566)
- Ganti panggilan ke
Versi 1.4.2
24 Juli 2024
androidx.collection:collection-*:1.4.2
dirilis. Versi 1.4.2 berisi commit ini.
Fitur Baru
- Mencakup target Multiplatform Kotlin tambahan:
watchos
,tvos
,linuxArm64
. (b/352543988)
Versi 1.4.1
10 Juli 2024
androidx.collection:collection-*:1.4.1
dirilis. Versi 1.4.1 berisi commit ini.
Perbaikan Bug
- Menghapus tombstone yang dihapus dari Peta/Set saat mengubah ukuran. (7a996c5, b/345960092)
Versi 1.4.0
24 Januari 2024
androidx.collection:collection-*:1.4.0
dirilis. Versi 1.4.0 berisi commit ini.
Perubahan penting sejak versi 1.3.0
Koleksi baru dengan efisiensi tinggi untuk menyimpan primitif tanpa boxing telah ditambahkan:
MutableScatterMap
&ScatterMap
- Kelas denganMutableMap
& API mirip petaMutableScatterSet
&ScatterSet
- Kelas denganMutableSet
& API set-likeMutableObjectList
&ObjectList
- Kelas denganMutableList
& API seperti daftar
Misalnya, peta dengan kunci bilangan bulat dan nilai jenis referensi adalah IntObjectMap<T>
. Peta dengan kunci panjang dan nilai float adalah LongFloatMap
. Tidak ada versi dengan nama ObjectObjectMap
karena itu dicakup oleh ScatterMap/MutableScatterMap
.
Versi 1.4.0-rc01
10 Januari 2024
androidx.collection:collection-*:1.4.0-rc01
dirilis tanpa perubahan. Versi 1.4.0-rc01 berisi commit ini.
Versi 1.4.0-beta02
29 November 2023
androidx.collection:collection-*:1.4.0-beta02
dirilis. Versi 1.4.0-beta02 berisi commit ini.
Fitur Baru
- Peningkatan performa
FloatFloatPair
. (If5537)
Perbaikan Bug
- Iterator
ScatterMap.asMap()
kini menampilkan instance baru (I28932, b/310365754)
Versi 1.4.0-beta01
15 November 2023
androidx.collection:collection-*:1.4.0-beta01
dirilis. Versi 1.4.0-beta01 berisi commit ini.
Perbaikan Bug
- Perbaikan untuk
ListIterator
yang salah menetapkan nilai dalamObjectList
yang dapat mengakibatkan error karenaIndexOutOfBoundsException
. (I3bd8a, b/307049391)
Versi 1.4.0-alpha02
18 Oktober 2023
androidx.collection:collection-*:1.4.0-alpha02
dirilis. Versi 1.4.0-alpha02 berisi commit ini.
Perubahan API
- Menambahkan overload untuk
put
yang menampilkan nilai sebelumnya saat diganti ke semua koleksi dasar, sepertiFloatFloatMap
. - Mengonversi metode
removeIf
pada koleksi dasar, sepertiMutableFloatFloatMap
menjadi inline. Tindakan ini memastikan bahwa lambda untukremoveIf
tidak dialokasikan.
Versi 1.4.0-alpha01
4 Oktober 2023
androidx.collection:collection-*:1.4.0-alpha01
dirilis. Versi 1.4.0-alpha01 berisi commit ini.
Fitur Baru
Kumpulan baru dengan efisiensi tinggi telah ditambahkan, yang memiliki overhead alokasi rendah dan performa tinggi:
MutableScatterMap
&ScatterMap
- Kelas denganMutableMap
& API mirip petaMutableScatterSet
&ScatterSet
- Kelas denganMutableSet
& API set-likeMutableObjectList
&ObjectList
- Kelas denganMutableList
& API seperti daftar
Koleksi baru dengan efisiensi tinggi untuk menyimpan primitif tanpa boxing telah ditambahkan:
Mutable[Int|Float|Long]List
- Class dengan API sepertiMutableList<Int|Float|Long>
.[Int|Float|Long]List
hanya-baca juga ada. Misalnya, bilangan bulat dapat disimpan diIntList
.Mutable[Int|Float|Long]Set
- Class dengan API sepertiMutableSet<Int|Float|Long>
.[Int|Float|Long]Set
hanya-baca juga ada. Misalnya, bilangan bulat dapat disimpan dalam IntSet.Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map
- Class dengan API sepertiMutable<Int|Float|Long,T, Int|Float|Long|T>
.[Int|Float|Long|Object][Int|Float|Long|Object]Map
hanya-baca juga ada. Misalnya, peta dengan kunci bilangan bulat dan nilai jenis referensi adalahIntObjectMap<T>
. Peta dengan kunci panjang dan nilai float adalahLongFloatMap
. Tidak ada versi dengan namaObjectObjectMap
karena itu dicakup olehScatterMap/MutableScatterMap
.
Versi 1.3.0
Versi 1.3.0
4 Oktober 2023
androidx.collection:collection-*:1.3.0
dirilis. Versi 1.3.0 berisi commit berikut ini.
Perubahan penting sejak versi 1.2.0
- Anda kini dapat menggunakan Collections di project Multiplatform Kotlin. Perlu diketahui bahwa koleksi target non-Android masih bersifat eksperimental, tetapi kami memutuskan untuk menggabungkan versi agar lebih mudah bagi developer untuk mencobanya.
- Semua sumber telah dimigrasikan ke Kotlin. Sebagai bagian dari perubahan ini, banyak API kini diketik dengan benar untuk nullity dan beberapa anggota pribadi paket telah menjadi
internal
. Daftar perubahan persisnya tersedia di catatan rilis minor untuk 1.3.x di bawah. - Seiring dengan migrasi Kotlin,
collection-ktx
telah digabungkan dengan artefak koleksi utama. Anda dapat dengan aman melepaskan dependensi dicollection:collection-ktx
dan mendukungcollection:collection
karenacollection-ktx
sekarang kosong.
Versi 1.3.0-rc01
6 September 2023
androidx.collection:collection-*:1.3.0-rc01
dirilis tanpa perubahan. Versi 1.3.0-rc01 berisi commit ini.
Versi 1.3.0-beta01
9 Agustus 2023
androidx.collection:collection-*:1.3.0-beta01
dirilis. Versi 1.3.0-beta01 berisi commit ini.
Versi 1.3.0-alpha04
24 Maret 2023
androidx.collection:collection-*:1.3.0-alpha04
dirilis.
Perbaikan Bug
- Menghapus batasan dependensi dari artefak Maven untuk mengatasi masalah build di Target Native Kotlin (b/274786186, KT-57531).
Versi 1.3.0-alpha03
22 Maret 2023
androidx.collection:collection-*:1.3.0-alpha03
dirilis. Versi 1.3.0-alpha03 berisi commit ini.
Fitur Baru
- Anda kini dapat menggunakan Koleksi di project KMM. Perlu diketahui bahwa koleksi target non-Android masih bersifat eksperimental, tetapi kami memutuskan untuk menggabungkan versi agar lebih mudah bagi developer untuk mencobanya.
Perubahan API
ArraySet
kini mengimplementasikanMutableCollections
, bukanAbstractMutableCollection
, untuk memungkinkan implementasitoArray
yang lebih hemat memori (I1ac32)
Perbaikan Bug
ArraySet.toArray
kini hanya tersedia di JVM karena selalu hanya disertakan untuk kompatibilitas dengan Java. Sebagai gantinya, pengguna Kotlin umumnya harus menggunakan helper.toTypedArray
stdlib, yang menyediakan fungsi yang sama persis dengan keamanan jenis tambahan. (I2c59b)
Versi 1.3.0-alpha02
27 Juli 2022
androidx.collection:collection:1.3.0-alpha02
dan androidx.collection:collection-ktx:1.3.0-alpha02
dirilis. Versi 1.3.0-alpha02 berisi commit ini.
Perubahan API
SparseArrayCompat
kini tersedia untuk platform non-jvm dari artefak umum (Ic9bd0, b/219589118, b/228347315)CircularIntArray
kini tersedia untuk platform non-jvm dari artefak umum (I3d8ef, b/228344943)LongSparseArray
kini tersedia untuk platform non-jvm dari artefak umum (I73149, b/228347315)
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 ini.
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 memperluasAbstractMutableCollection
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
, bukanT?
:ArraySet<T>.contains(null)
ArraySet<T>.add(null)
ArraySet<T>.remove(null)
- Panggilan berikut memiliki jenis nilai yang ditampilkan
T?
, bukanT!
:ArraySet<T?>.valueAt(n)
ArraySet<T?>.removeAt(n)
ArraySet<T?>().iterator().next()
- Panggilan berikut tidak lagi dapat dilakukan dari Kotlin:
set.toArray()
- gunakanset.toTypedArray()
set.toArray(array)
- gunakanset.forEachIndexed(array::set)
- Panggilan berikut memiliki jenis argumen
- 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 APISparseArrayCompat
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)
- API pribadi paket,
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 menampilkannull
untuk panggilan tidak diinisialisasi yang di luar batasansize()
, 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 ini.
Perubahan penting sejak 1.1.0
- Menambahkan konstruktor array ke
ArraySet
. (Id7f19) - Menyesuaikan
entrySet()
agar mematuhi API dengan mengimplementasikanentrySet().toArray()
,remove()
,removeAll()
, danretainAll()
, serta menghapus implementasientrySet().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 ini.
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 mengimplementasikanentrySet().toArray()
,remove()
,removeAll()
, danretainAll()
, serta menghapus implementasientrySet().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
danisNotEmpty
dalam artefak 'collection-ktx'. (aosp/866529)
Perubahan API
- Menambahkan
putIfAbsent
keLongSparseArray
,SimpleArrayMap
, danSparseArrayCompat
(aosp/772608) - Menambahkan
getOrDefault
keSimpleArrayMap
(aosp/772607) - Menambahkan
remove
dua argumen keLongSparseArray
,SimpleArrayMap
, danSparseArrayCompat
. Menghentikan penggunaan ekstensi KTX yang terkait untuk fungsionalitas ini. (aosp/772482) - Menambahkan
replace
dua argumen keLongSparseArray
,SimpleArrayMap
, danSparseArrayCompat
(aosp/772483) - Menambahkan
replace
tiga argumen keLongSparseArray
,SimpleArrayMap
, danSparseArrayCompat
(aosp/772484 ) - Menghentikan penggunaan metode
delete
yang redundan. Metoderemove
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 diSimpleArrayMap.class
, bukanArrayMap.class
. Perubahan ini memastikan bahwa jika Anda hanya menggunakanSimpleArrayMap
,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
danisNotEmpty
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 diSimpleArrayMap.class
, bukanArrayMap.class
. Perubahan ini memastikan bahwa jika Anda hanya menggunakanSimpleArrayMap
,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. Metoderemove
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
keLongSparseArray
,SimpleArrayMap
, danSparseArrayCompat
(aosp/772608) - Menambahkan
getOrDefault
keSimpleArrayMap
(aosp/772607) - Menambahkan
remove
dua argumen keLongSparseArray
,SimpleArrayMap
, danSparseArrayCompat
. Menghentikan penggunaan ekstensi KTX yang terkait untuk fungsionalitas ini. (aosp/772482) - Menambahkan
replace
dua argumen keLongSparseArray
,SimpleArrayMap
, danSparseArrayCompat
(aosp/772483) - Menambahkan
replace
tiga argumen keLongSparseArray
,SimpleArrayMap
, danSparseArrayCompat
(aosp/772484 )