收藏
| 最新更新 | 稳定版 | 发布候选版 | Beta 版 | Alpha 版 |
|---|---|---|---|---|
| 2025 年 3 月 12 日 | 1.5.0 | - | - | - |
声明依赖项
要添加对 Collection 的依赖项,您必须将 Google Maven 代码库添加到您的项目中。阅读Google 的 Maven 代码库了解更多信息。
在应用或模块的 build.gradle 文件中添加所需工件的依赖项
Groovy
dependencies { def collection_version = "1.5.0" implementation "androidx.collection:collection:$collection_version" }
Kotlin
dependencies { val collection_version = "1.5.0" implementation("androidx.collection:collection:$collection_version") }
如需了解有关依赖项的更多信息,请参阅添加构建依赖项。
反馈
您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以点击星形按钮为您已发现的问题投票。
如需了解更多信息,请参阅问题跟踪器文档。
版本 1.5
版本 1.5.0
2025 年 3 月 12 日
androidx.collection:collection-*:1.5.0 已发布。版本 1.5.0 包含这些提交。
版本 1.5.0-rc01
2025 年 2 月 26 日
androidx.collection:collection-*:1.5.0-rc01 已发布。版本 1.5.0-rc01 包含这些提交。
版本 1.5.0-beta03
2025 年 1 月 29 日
androidx.collection:collection-*:1.5.0-beta03 已发布。版本 1.5.0-beta03 包含这些提交。
版本 1.5.0-beta02
2025 年 1 月 15 日
androidx.collection:collection-*:1.5.0-beta02 已发布。版本 1.5.0-beta02 包含这些提交。
版本 1.5.0-beta01
2024 年 12 月 11 日
androidx.collection:collection-*:1.5.0-beta01 已发布。版本 1.5.0-beta01 包含这些提交。
API 变更
- 增加了对
watchosDeviceArm64KMP 目标和 Kotlin 1.9 目标的支持 (Icf15d, b/364652024)
版本 1.5.0-alpha06
2024 年 11 月 13 日
androidx.collection:collection-*:1.5.0-alpha06 已发布。版本 1.5.0-alpha06 包含这些提交。
Bug 修复
- 修复了在添加大量项目导致重复键冲突时,
SieveCache和OrderedScatterSet中可能发生的崩溃问题。(Iaaf3d, b/375607736) - 将 wasm 目标添加到集合库中。(I66fe3, b/352722444)
版本 1.5.0-alpha05
2024 年 10 月 30 日
androidx.collection:collection-*:1.5.0-alpha05 已发布。版本 1.5.0-alpha05 包含这些提交。
版本 1.5.0-alpha04
2024 年 10 月 16 日
androidx.collection:collection-*:1.5.0-alpha04 已发布。版本 1.5.0-alpha04 包含这些提交。
版本 1.5.0-alpha03
2024 年 10 月 2 日
androidx.collection:collection-*:1.5.0-alpha03 已发布。版本 1.5.0-alpha03 包含这些提交。
API 变更
- Kotlin 版本更新至 1.9 (I1a14c)
外部贡献
版本 1.5.0-alpha02
2024 年 9 月 18 日
androidx.collection:collection-*:1.5.0-alpha02 已发布。版本 1.5.0-alpha02 包含这些提交。
API 变更
- 增加了对
watchosDeviceArm64平台目标的支持。(I1cc04, b/364652024)
版本 1.5.0-alpha01
2024 年 9 月 4 日
androidx.collection:collection-*:1.5.0-alpha01 已发布。版本 1.5.0-alpha01 包含这些提交。
API 变更
OrderedScatterSet是一个新的有序、无分配集合 (Ic4178)SieveCache是LruCache的新无分配替代品,具有更好的命中率特性。(I50a17)- 公开了
IntIntPair和FloatFloatPair的内部表示packedValue。(Ifeb75, b/331853566) - 增加了对列表集合中内容数组的访问。(I899d5, b/333903173)
- 添加了
DoubleList,这是一种针对 Double 值优化的类 List 数据结构。(Ia10d1, b/315127635)
Bug 修复
版本 1.4
版本 1.4.5
2024 年 10 月 30 日
androidx.collection:collection-*:1.4.5 已发布。版本 1.4.5 包含这些提交。
版本 1.4.4
2024 年 9 月 18 日
androidx.collection:collection-*:1.4.4 已发布。版本 1.4.4 包含这些提交。
Bug 修复
- 解决了排序空集合时可能出现的
ArrayIndexOutOfBounds问题。(I65245)
版本 1.4.3
2024 年 8 月 7 日
androidx.collection:collection-*:1.4.3 已发布。版本 1.4.3 包含这些提交。
Bug 修复
- 修复了
ScatterMap、ScatterSet及其原始变体中可能发生的损坏。(I38a4a, b/352560465) - 性能优化。特别是
- 将对
check()和required()的调用替换为不内联异常抛出的变体。这会减小最终二进制文件的大小,更重要的是稍微减轻了 i-cache 压力。 - 改进了“散射”系列集合中的
removeDeletedMarkers()。新版本一次清除 8 个已删除标记,并在此过程中跳过更昂贵的写入。(Ic0566)
- 将对
版本 1.4.2
2024 年 7 月 24 日
androidx.collection:collection-*:1.4.2 已发布。版本 1.4.2 包含这些提交。
新功能
- 包含额外的 Kotlin Multiplatform 目标:
watchos、tvos、linuxArm64。(b/352543988)
版本 1.4.1
2024 年 7 月 10 日
androidx.collection:collection-*:1.4.1 已发布。版本 1.4.1 包含这些提交。
Bug 修复
- 调整大小后,从 Map/Set 中移除已删除的墓碑。(7a996c5, b/345960092)
版本 1.4.0
2024 年 1 月 24 日
androidx.collection:collection-*:1.4.0 已发布。版本 1.4.0 包含这些提交。
自 1.3.0 以来的重要变更
新增了用于存储基本类型而无需装箱的高效集合
MutableScatterMap和ScatterMap- 具有MutableMap和类 Map API 的类MutableScatterSet和ScatterSet- 具有MutableSet和类 Set API 的类MutableObjectList和ObjectList- 具有MutableList和类 List API 的类
例如,具有整数键和引用类型值的映射是 IntObjectMap<T>。具有长整数键和浮点值的映射是 LongFloatMap。没有名为 ObjectObjectMap 的版本,因为它由 ScatterMap/MutableScatterMap 涵盖。
版本 1.4.0-rc01
2024 年 1 月 10 日
androidx.collection:collection-*:1.4.0-rc01 已发布,无任何更改。版本 1.4.0-rc01 包含这些提交。
版本 1.4.0-beta02
2023 年 11 月 29 日
androidx.collection:collection-*:1.4.0-beta02 已发布。版本 1.4.0-beta02 包含这些提交。
新功能
- 改进了
FloatFloatPair的性能。(If5537)
Bug 修复
ScatterMap.asMap()迭代器现在返回新实例 (I28932, b/310365754)
版本 1.4.0-beta01
2023 年 11 月 15 日
androidx.collection:collection-*:1.4.0-beta01 已发布。版本 1.4.0-beta01 包含这些提交。
Bug 修复
- 修复了
ListIterator在ObjectList中错误设置值,可能导致由于IndexOutOfBoundsException而崩溃的问题。(I3bd8a, b/307049391)
版本 1.4.0-alpha02
2023 年 10 月 18 日
androidx.collection:collection-*:1.4.0-alpha02 已发布。版本 1.4.0-alpha02 包含这些提交。
API 变更
- 为所有基本类型集合(例如
FloatFloatMap)添加了返回替换后的旧值的put重载。 - 将基本类型集合(例如
MutableFloatFloatMap)上的removeIf方法转换为内联。这可确保removeIf的 lambda 不会被分配。
版本 1.4.0-alpha01
2023 年 10 月 4 日
androidx.collection:collection-*:1.4.0-alpha01 已发布。版本 1.4.0-alpha01 包含这些提交。
新功能
新增了分配开销低且性能高的高效集合
MutableScatterMap和ScatterMap- 具有MutableMap和类 Map API 的类MutableScatterSet和ScatterSet- 具有MutableSet和类 Set API 的类MutableObjectList和ObjectList- 具有MutableList和类 List API 的类
新增了用于存储基本类型而无需装箱的高效集合
Mutable[Int|Float|Long]List- 具有MutableList<Int|Float|Long>类似 API 的类。也存在只读[Int|Float|Long]List。例如,整数可以保存在IntList中。Mutable[Int|Float|Long]Set- 具有MutableSet<Int|Float|Long>类似 API 的类。也存在只读[Int|Float|Long]Set。例如,整数可以保存在 IntSet 中。Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map- 具有Mutable<Int|Float|Long,T, Int|Float|Long|T>类似 API 的类。也存在只读[Int|Float|Long|Object][Int|Float|Long|Object]Map。例如,具有整数键和引用类型值的映射是IntObjectMap<T>。具有长整数键和浮点值的映射是LongFloatMap。没有名为ObjectObjectMap的版本,因为它由ScatterMap/MutableScatterMap涵盖。
版本 1.3.0
版本 1.3.0
2023 年 10 月 4 日
androidx.collection:collection-*:1.3.0 已发布。版本 1.3.0 包含这些提交。
自 1.2.0 以来的重要变更
- 您现在可以在 Kotlin Multiplatform 项目中使用 Collections。请注意,Collection 的非 Android 目标仍处于实验阶段,但我们决定合并版本,以便开发者更容易尝试它们。
- 所有源代码已迁移到 Kotlin。作为此更改的一部分,许多 API 现在已正确地为可空性进行了类型化,并且一些包私有成员已变为
internal。有关精确更改的列表,请参阅下方 1.3.x 的次要版本说明。 - 随着 Kotlin 迁移,
collection-ktx已与主集合工件合并。您可以安全地移除对collection:collection-ktx的任何依赖项,转而使用collection:collection,因为collection-ktx现在是空的。
版本 1.3.0-rc01
2023 年 9 月 6 日
androidx.collection:collection-*:1.3.0-rc01 已发布,无任何更改。版本 1.3.0-rc01 包含这些提交。
版本 1.3.0-beta01
2023 年 8 月 9 日
androidx.collection:collection-*:1.3.0-beta01 已发布。版本 1.3.0-beta01 包含这些提交。
版本 1.3.0-alpha04
2023 年 3 月 24 日
androidx.collection:collection-*:1.3.0-alpha04 已发布。
Bug 修复
- 从 Maven 工件中移除了依赖项约束,以解决 Kotlin Native 目标中的构建问题 (b/274786186, KT-57531)。
版本 1.3.0-alpha03
2023 年 3 月 22 日
androidx.collection:collection-*:1.3.0-alpha03 已发布。版本 1.3.0-alpha03 包含这些提交。
新功能
- 您现在可以在 KMM 项目中使用 Collections。请注意,Collection 的非 Android 目标仍处于实验阶段,但我们决定合并版本,以便开发者更容易尝试它们。
API 变更
ArraySet现在实现MutableCollections而非AbstractMutableCollection,以实现更节省内存的toArray实现 (I1ac32)
Bug 修复
ArraySet.toArray现在仅在 JVM 上可用,因为它始终仅为与 Java 兼容而包含。Kotlin 用户通常应改用 stdlib 的.toTypedArray助手,它提供完全相同的功能并增加了类型安全性。(I2c59b)
版本 1.3.0-alpha02
2022 年 7 月 27 日
androidx.collection:collection:1.3.0-alpha02 和 androidx.collection:collection-ktx:1.3.0-alpha02 已发布。版本 1.3.0-alpha02 包含这些提交。
API 变更
SparseArrayCompat现在可从 common 工件中获取,供非 jvm 平台使用 (Ic9bd0, b/219589118, b/228347315)CircularIntArray现在可从 common 工件中获取,供非 jvm 平台使用 (I3d8ef, b/228344943)LongSparseArray现在可从 common 工件中获取,供非 jvm 平台使用 (I73149, b/228347315)
版本 1.3.0-alpha01
2022 年 6 月 29 日
androidx.collection:collection:1.3.0-alpha01 和 androidx.collection:collection-ktx:1.3.0-alpha01 已发布。版本 1.3.0-alpha01 包含这些提交。
新功能
collection-ktx扩展已迁移到主集合工件androidx.collection:collection中。此更改使得现有的 -ktx 扩展可供 Kotlin 用户访问,而无需 -ktx 依赖项,同时仍保持对现有用户的兼容性。由于主工件已移至 Kotlin,因此将这些扩展维护在单独的 -ktx 工件中已不再有益。(I6eef2)
API 变更
ArraySet现在扩展AbstractMutableCollection,不再直接实现 Collection 接口。(If6da0, b/230860589)- 已将
ArraySet转换为 Kotlin。由于更严格的类型检查,某些 Kotlin 调用可能无法再编译。(Id68c1, b/230860589)- 以下调用的参数类型为
T,而非T?ArraySet<T>.contains(null)ArraySet<T>.add(null)ArraySet<T>.remove(null)
- 以下调用的返回类型为
T?,而非T!ArraySet<T?>.valueAt(n)ArraySet<T?>.removeAt(n)ArraySet<T?>().iterator().next()
- 以下调用在 Kotlin 中不再可能
set.toArray()- 使用set.toTypedArray()set.toArray(array)- 使用set.forEachIndexed(array::set)
- 以下调用的参数类型为
- 将
SparseArrayCompat的重载构造函数合并为 Kotlin 用户的可选参数。(If8407, b/227474719) - 移除了
SparseArrayCompat.get(key, defaultValue)的运算符语法。请注意,这仍允许.get(key)的运算符语法,但更好地使SparseArrayCompat的 API 表面与此库中的其他类对齐。(I9a38d) - 将
LongSparseArray扩展迁移到主工件 androidx.collection:collection 中。此更改使现有的 -ktx 扩展可供 Kotlin 用户访问,而无需 -ktx 依赖项,同时仍保持对现有用户的兼容性。由于主工件已移至 Kotlin,因此将这些扩展维护在单独的 -ktx 工件中已不再有益。(I8659a) - 已将
LongSparseArray转换为 Kotlin。此更改为其类型添加了显式可空性,这是一个二进制兼容的更改,但可能导致源代码不兼容。特别是:*.isEmpty不再作为属性可访问,它必须在 Kotlin 中作为函数调用访问 -.isEmpty()(Idfd0f) - 已将
SimpleArrayMap转换为 Kotlin。此更改引入了一些不兼容的更改,这是 Java-Kotlin 互操作以及正确定义源中类型可空性的能力所致。- 包私有 API
.mSize、.mArray、.mHashes、.indexOf()、.indexOfNull()和.indexOfValue()已设为私有 - 这在技术上是一个二进制不兼容的更改,但反映了这些字段的预期可见性,并且是我们在 Kotlin 中能达到的最接近的效果,因为它不包含指定包私有可见性的方式。 - 现在已正确定义某些类型的可空性,受影响的方法有:
.getOrDefault、.keyAt、.valueAt、.setValueAt、.put、.putIfAbsent、.removeAt、.replace。 - 对于 Kotlin 用户,
.isEmpty()现在只能作为函数使用,而不能通过属性访问。(I271b7, b/182813986)
- 包私有 API
已将
CircularArray转换为 Kotlin。值得注意的更改:- 纠正了其泛型的可空性,使其为非空,这以前无法声明,但在其所有公共 API 中都已强制执行。
- 由于 Kotlin 的 Java 互操作性,以前可以将某些方法作为属性或函数访问。但是,为了减少重复同时保持二进制兼容性,有必要移除这些方法,这是一个源不兼容的更改。受影响的调用有:
.isEmpty、.getLast()和.getFirst()。(Ifffac)
已将
CircularIntArray转换为 Kotlin。由于 Kotlin 的 Java 互操作性,以前可以将某些方法作为属性或函数访问。但是,为了减少重复同时保持二进制兼容性,有必要移除这些方法,这是一个源不兼容的更改。受影响的调用有:.isEmpty、.getLast()和.getFirst()。(Ie36ce)已将
LruCache转换为 Kotlin (Ia2f19)已将
SparseArrayCompat转换为 Kotlin。(If6fe8)对
SparseArrayCompat.valueAt()添加了一个小的行为更改,它不再错误地为超出size()边界但在所提供的初始容量内的未初始化调用返回null。此更改还引入了之前缺失的某些类型的正确可空性。
.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)
版本 1.2.0
版本 1.2.0
2021 年 12 月 1 日
androidx.collection:collection:1.2.0 和 androidx.collection:collection-ktx:1.2.0 已发布。版本 1.2.0 包含这些提交。
自 1.1.0 以来的重要变更
- 为
ArraySet添加了数组构造函数。(Id7f19) - 通过实现
entrySet().toArray()、remove()、removeAll()和retainAll(),并移除entrySet().addAll()的实现,使entrySet()符合 API 规范。(I5d505)
版本 1.2.0-rc01
2021 年 11 月 17 日
androidx.collection:collection:1.2.0-rc01 和 androidx.collection:collection-ktx:1.2.0-rc01 已发布。版本 1.2.0-rc01 包含这些提交。
API 变更
- 与之前的 beta 版相比无变化。
版本 1.2.0-beta01
2021 年 10 月 13 日
androidx.collection:collection:1.2.0-beta01 和 androidx.collection:collection-ktx:1.2.0-beta01 已发布。版本 1.2.0-beta01 包含这些提交。
Bug 修复
- 通过实现
entrySet().toArray()、remove()、removeAll()和retainAll(),并移除entrySet().addAll()的实现,使entrySet()符合 API 规范。(I5d505)
版本 1.2.0-alpha01
2020 年 12 月 16 日
androidx.collection:collection:1.2.0-alpha01 和 androidx.collection:collection-ktx:1.2.0-alpha01 已发布。版本 1.2.0-alpha01 包含这些提交。
API 变更
- 为
ArraySet添加了数组构造函数。(Id7f19)
版本 1.1.0
版本 1.1.0
2019 年 6 月 5 日
androidx.collection:collection:1.1.0 和 androidx.collection:collection-ktx:1.1.0 已发布。1.1.0 中包含的提交可在此处找到:此处。
以下是 1.0.0 到 1.1.0 的更改摘要
新功能
- 在 'collection-ktx' 工件中,为
contains和isNotEmpty函数使用更高效的实现。(aosp/866529)
API 变更
- 为
LongSparseArray、SimpleArrayMap和SparseArrayCompat添加了putIfAbsent(aosp/772608) - 为
SimpleArrayMap添加了getOrDefault(aosp/772607) - 为
LongSparseArray、SimpleArrayMap和SparseArrayCompat添加了双参数remove。弃用了此功能的相应 KTX 扩展。(aosp/772482) - 为
LongSparseArray、SimpleArrayMap和SparseArrayCompat添加了双参数replace(aosp/772483) - 为
LongSparseArray、SimpleArrayMap和SparseArrayCompat添加了三参数replace(aosp/772484) - 弃用了冗余的
delete方法。remove方法提供了相同的 API 和功能,并与非专用 Map 使用的 API 匹配。(aosp/866053)
Bug 修复
- 将
SimpleArrayMap更改为在其内部全局数组缓存中同步SimpleArrayMap.class而非ArrayMap.class。这可确保如果您只使用SimpleArrayMap,ArrayMap可以通过代码收缩工具移除。(aosp/934557)
版本 1.1.0-rc01
2019 年 5 月 7 日
androidx.collection:collection:1.1.0-rc01 和 androidx.collection:collection-ktx:1.1.0-rc01 已发布。此版本中包含的提交可在此处找到:此处。
新功能
- 在 'collection-ktx' 工件中,为
contains和isNotEmpty函数使用更高效的实现。(aosp/866529)
版本 1.1.0-beta01
2019 年 4 月 3 日
androidx.collection:collection:1.1.0-beta01 和 androidx.collection:collection-ktx:1.1.0-beta01 已发布。此版本中包含的提交可在此处找到:此处。
API 变更
- alpha03 发布说明中提到的其
@RestrictTo值已更改的方法已被移除。它没有被任何 AndroidX 库使用(现在或过去),并且它没有提供公共 API 中缺失的任何功能。
Bug 修复
- 将
SimpleArrayMap更改为在其内部全局数组缓存中同步SimpleArrayMap.class而非ArrayMap.class。这可确保如果您只使用SimpleArrayMap,ArrayMap可以通过代码收缩工具移除。(aosp/934557)
版本 1.1.0-alpha03
2019 年 3 月 13 日
androidx.collection:collection:1.0.0-alpha03 和 androidx.collection:collection-ktx:1.0.0-alpha03 已发布。此版本中包含的完整提交列表可在此处找到:此处。
API 变更
ArraySet上先前标记为@RestrictTo(LIBRARY_GROUP)的方法已更改为@RestrictTo(LIBRARY_GROUP_PREFIX)。这是为了支持其他 AndroidX 库的历史使用,这些库现在位于不同的 Maven 组 ID 中。此方法将在 1.1.0-alpha04 中公开或移除,因为其他 AndroidX 库不应获得其他开发者没有的特殊 API。
版本 1.1.0-alpha02
2019 年 1 月 30 日
androidx.collection:collection 1.1.0-alpha02 和 androidx.collection:collection-ktx 1.1.0-alpha02 已发布。
API 变更
- 弃用了冗余的
delete方法。remove方法提供了相同的 API 和功能,并与非专用 Map 使用的 API 匹配。(aosp/866053)
版本 1.1.0-alpha01
2018 年 12 月 3 日
API 变更
- 为
LongSparseArray、SimpleArrayMap和SparseArrayCompat添加了putIfAbsent(aosp/772608) - 为
SimpleArrayMap添加了getOrDefault(aosp/772607) - 为
LongSparseArray、SimpleArrayMap和SparseArrayCompat添加了双参数remove。弃用了此功能的相应 KTX 扩展。(aosp/772482) - 为
LongSparseArray、SimpleArrayMap和SparseArrayCompat添加了双参数replace(aosp/772483) - 为
LongSparseArray、SimpleArrayMap和SparseArrayCompat添加了三参数replace(aosp/772484)