Collection
最近更新時間 | 穩定版 | 候選版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 8 月 7 日 | 1.4.3 版 | - | - | - |
宣告依附元件
如要新增「精選」依附元件,您必須將 Google Maven 存放區新增至專案。詳情請參閱 Google 的 Maven 存放區。
在應用程式或模組的 build.gradle
檔案中,新增您需要的構件依附元件:
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") }
如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。
意見回饋
您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。
詳情請參閱 Issue Tracker 文件。
1.4 版
1.4.3 版本
2024 年 8 月 7 日
發布 androidx.collection:collection-*:1.4.3
。1.4.3 版包含這些修訂版本。
修正錯誤
- 已修正
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 版包含這些修訂版本。
修正錯誤
- 調整大小時,將已刪除的空值從地圖/集合中移除。(7a996c5、b/345960092)
1.4.0 版本
2024 年 1 月 24 日
發布 androidx.collection:collection-*:1.4.0
。1.4.0 版包含此連結所列的修訂項目。
自 1.3.0 版以來的重要異動
我們新增了高效率集合,方便您在不拳擊的情況下儲存基元:
MutableScatterMap
和ScatterMap
- 具有MutableMap
和類似地圖的 APIMutableScatterSet
和ScatterSet
- 具有MutableSet
和類似組合的 APIMutableObjectList
和ObjectList
- 具有MutableList
和清單式 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
中可能導致因IndexOutOfBoundsException
而造成當機的ObjectList
值錯誤的問題。(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
和類似地圖的 APIMutableScatterSet
和ScatterSet
- 具有MutableSet
和類似組合的 APIMutableObjectList
和ObjectList
- 具有MutableList
和清單式 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 專案中使用集合了。請注意,Google 集合的非 Android 目標功能仍處於實驗階段,但我們決定合併多個版本,方便開發人員試用。
- 所有來源皆已遷移至 Kotlin。在本次變更中,許多 API 現在均正確輸入空值,而少數套件私人成員現已成為
internal
。如需確切異動內容清單,請參閱 1.3.x 版的次要版本資訊。 - 除了 Kotlin 遷移作業,
collection-ktx
已與主要集合構件合併。由於collection-ktx
現已空白,您可以放心捨棄collection:collection-ktx
上的任何依附元件,並改用collection:collection
。
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 Targets 中的建構問題 (b/274786186、KT-57531)。
1.3.0-alpha03 版
2023 年 3 月 22 日
發布 androidx.collection:collection-*:1.3.0-alpha03
。1.3.0-alpha03 版包含此連結所列的修訂項目。
新功能
- 您現在可以在 KMM 專案中使用集合。請注意,Google 集合的非 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
擴充功能已遷移至主要 Collection 構件androidx.collection:collection
。這項變更讓 Kotlin 使用者可以存取現有的 -ktx 擴充功能,而不需要 -ktx 依附元件,同時仍保持與現有使用者的相容性。將這些擴充功能保留在單獨的 -ktx 構件中,已無益處,因為主要構件已移至 Kotlin。(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。這項變更讓 Kotlin 使用者可以存取現有的 -ktx 擴充功能,而不需要 -ktx 依附元件,同時仍保持與現有使用者的相容性。將這些擴充功能保留在單獨的 -ktx 構件中,已無益處,因為主要構件已移至 Kotlin。(I8659a)。 - 將
LongSparseArray
轉換為 Kotlin。這項變更會在類型中新增明確的空值,這是與二進位檔相容的變更,但可能會導致來源不相容。具體來說:*.isEmpty
無法再以屬性的形式存取,必須在 Kotlin 中以函式呼叫的方式存取 -.isEmpty()
(Idfd0f) - 將
SimpleArrayMap
轉換為 Kotlin。由於 Java-Kotlin 互通性及可正確定義來源中類型的空值,這項變更也可能造成一些不相容的變更。- 私有套件、
.mSize
、.mArray
、.mHashes
已建立.indexOf()
、.indexOfNull()
和.indexOfValue()
private - 這在技術上是與二進位檔不相容的變更,但 反映這些欄位的預期可見性,也是距離最近 在 Kotlin 中仍可達成,因為不提供指定 套件私人瀏覽權限 - 部分類型的空值現已正確定義,
方法包括:
.getOrDefault
、.keyAt
、.valueAt
、.setValueAt
.put
、.putIfAbsent
、.removeAt
、.replace
。 - 針對 Kotlin 使用者,
.isEmpty()
現在僅能以函式的形式使用,而非 管理自己的資源(I271b7、b/182813986)
- 私有套件、
將
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()
的微小行為變更 不再對未初始化的呼叫錯誤傳回null
範圍為size()
,但在提供的初始容量內。這項變更也適用於部分類型的正確空值
.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()
符合法規規定 (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()
符合法規規定 (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 和功能,而且與非特殊活動地圖使用的 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 和功能,而且與非特殊活動地圖使用的 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)