集合
最新更新 | 稳定版 | 候选版本 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 11 月 13 日 | 1.4.5 | - | - | 1.5.0-alpha06 |
声明依赖项
要添加对 Collection 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读Google 的 Maven 存储库以了解更多信息。
在应用或模块的build.gradle
文件中添加所需构件的依赖项
Groovy
dependencies { def collection_version = "1.4.5" implementation "androidx.collection:collection:$collection_version" }
Kotlin
dependencies { val collection_version = "1.4.5" implementation("androidx.collection:collection:$collection_version") }
有关依赖项的更多信息,请参阅添加构建依赖项。
反馈
您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中现有的问题。您可以通过点击星形按钮为现有问题添加您的投票。
有关更多信息,请参阅问题跟踪器文档。
版本 1.5
版本 1.5.0-alpha06
2024 年 11 月 13 日
androidx.collection:collection-*:1.5.0-alpha06
已发布。版本 1.5.0-alpha06 包含这些提交。
错误修复
- 修复了在添加大量项目导致重复键冲突时,
SieveCache
和OrderedScatterSet
中可能发生的崩溃。(Iaaf3d,b/375607736) - 将 wasm 目标添加到 collection 库。(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)
错误修复
版本 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 包含 这些提交。
错误修复
- 在排序空集合时解决
ArrayIndexOutOfBounds
问题。(I65245)
版本 1.4.3
2024年8月7日
androidx.collection:collection-*:1.4.3
已发布。版本 1.4.3 包含 这些提交。
错误修复
- 修复了
ScatterMap
、ScatterSet
及其基本类型变体中可能发生的损坏问题。(I38a4a,b/352560465) - 性能优化。具体包括:
- 将对
check()
和required()
的调用替换为不内联异常抛出的变体。这减少了最终二进制文件的大小,更重要的是稍微减轻了 i 缓存的压力。 - 改进了“散列”系列集合中的
removeDeletedMarkers()
。新版本一次清除 8 个已删除的标记,并在过程中跳过更多昂贵的写入操作。(Ic0566)
- 将对
版本 1.4.2
2024年7月24日
androidx.collection:collection-*:1.4.2
已发布。版本 1.4.2 包含 这些提交。
新功能
- 包含其他 Kotlin 多平台目标:
watchos
、tvos
、linuxArm64
。(b/352543988)
版本 1.4.1
2024年7月10日
androidx.collection:collection-*:1.4.1
已发布。版本 1.4.1 包含 这些提交。
错误修复
- 在调整大小期间从 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)
错误修复
ScatterMap.asMap()
迭代器现在返回新实例 (I28932,b/310365754)
版本 1.4.0-beta01
2023年11月15日
androidx.collection:collection-*:1.4.0-beta01
已发布。版本 1.4.0-beta01 包含这些提交。
错误修复
- 修复了
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 变更
- 为
put
添加了重载,当替换时它会返回所有基本类型集合(例如FloatFloatMap
)中的先前值。 - 将基本类型集合(例如
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 多平台项目中使用集合。请注意,集合的非 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
已发布。
错误修复
- 从 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 项目中使用集合。请注意,集合的非 Android 目标仍处于实验阶段,但我们决定合并版本以方便开发者尝试。
API 变更
ArraySet
现在实现了MutableCollections
而不是AbstractMutableCollection
,以便能够更有效地实现toArray
(I1ac32)
错误修复
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
现在可以通过通用工件在非 JVM 平台上使用 (Ic9bd0,b/219589118,b/228347315)CircularIntArray
现在可以通过通用工件在非 JVM 平台上使用 (I3d8ef,b/228344943)LongSparseArray
现在可以通过通用工件在非 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 扩展可以在不依赖 -ktx 的情况下供 Kotlin 用户访问,同时仍然保持与现有用户的兼容性。由于主工件已迁移到 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 扩展可以在不依赖 -ktx 的情况下供 Kotlin 用户访问,同时仍然保持与现有用户的兼容性。由于主工件已迁移到 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 包含这些提交。
错误修复
- 通过实现
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 更改
- 将
putIfAbsent
添加到LongSparseArray
、SimpleArrayMap
和SparseArrayCompat
中(aosp/772608) - 将
getOrDefault
添加到SimpleArrayMap
中(aosp/772607) - 将两个参数的
remove
添加到LongSparseArray
、SimpleArrayMap
和SparseArrayCompat
中。弃用此功能的相应 KTX 扩展。(aosp/772482) - 将两个参数的
replace
添加到LongSparseArray
、SimpleArrayMap
和SparseArrayCompat
中(aosp/772483) - 将三个参数的
replace
添加到LongSparseArray
、SimpleArrayMap
和SparseArrayCompat
中(aosp/772484) - 弃用冗余的
delete
方法。remove
方法提供了相同的 API 和功能,并且与非专门化 Map 使用的 API 相匹配。(aosp/866053)
错误修复
- 将
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 中缺少的任何功能。
错误修复
- 将
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 更改
- 将
putIfAbsent
添加到LongSparseArray
、SimpleArrayMap
和SparseArrayCompat
中(aosp/772608) - 将
getOrDefault
添加到SimpleArrayMap
中(aosp/772607) - 将两个参数的
remove
添加到LongSparseArray
、SimpleArrayMap
和SparseArrayCompat
中。弃用此功能的相应 KTX 扩展。(aosp/772482) - 将两个参数的
replace
添加到LongSparseArray
、SimpleArrayMap
和SparseArrayCompat
中(aosp/772483) - 将三个参数的
replace
添加到LongSparseArray
、SimpleArrayMap
和SparseArrayCompat
中(aosp/772484)