コレクション
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2024 年 8 月 7 日 | 1.4.3 | - | - | - |
依存関係の宣言
Collection への依存関係を追加するには、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 に含まれる commit については、こちらをご覧ください。
バグの修正
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 に含まれる commit については、こちらをご覧ください。
新機能
- 追加の Kotlin マルチプラットフォーム ターゲット(
watchos
、tvos
、linuxArm64
)が含まれています。(b/352543988)。
バージョン 1.4.1
2024 年 7 月 10 日
androidx.collection:collection-*:1.4.1
がリリースされました。バージョン 1.4.1 に含まれる commit については、こちらをご覧ください。
バグの修正
- サイズ変更時に Map/Set から削除された tombstone を削除する。(7a996c5、b/345960092)。
バージョン 1.4.0
2024 年 1 月 24 日
androidx.collection:collection-*:1.4.0
がリリースされました。バージョン 1.4.0 に含まれる commit については、こちらをご覧ください。
1.3.0 以降の重要な変更
ボクシングなしでプリミティブを保存するための新しい高効率コレクションが追加されました。
MutableScatterMap
とScatterMap
-MutableMap
と地図のような APIMutableScatterSet
とScatterSet
-MutableSet
とセット型 APIMutableObjectList
とObjectList
-MutableList
とList-like API
たとえば、整数キーと参照型値を持つマップは IntObjectMap<T>
です。長整数と浮動小数点値を持つマップは LongFloatMap
です。ScatterMap/MutableScatterMap
でカバーされているため、ObjectObjectMap
という名前のバージョンはありません。
バージョン 1.4.0-rc01
2024 年 1 月 10 日
androidx.collection:collection-*:1.4.0-rc01
がリリースされました。変更はありません。バージョン 1.4.0-rc01 に含まれる commit については、こちらをご覧ください。
バージョン 1.4.0-beta02
2023 年 11 月 29 日
androidx.collection:collection-*:1.4.0-beta02
がリリースされました。バージョン 1.4.0-beta02 に含まれる commit については、こちらをご覧ください。
新機能
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 に含まれる commit については、こちらをご覧ください。
バグの修正
ListIterator
がObjectList
に値を誤って設定していた場合、IndexOutOfBoundsException
が原因でクラッシュする可能性があります。(I3bd8a、b/307049391)。
バージョン 1.4.0-alpha02
2023 年 10 月 18 日
androidx.collection:collection-*:1.4.0-alpha02
がリリースされました。バージョン 1.4.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
- 値がすべてのプリミティブ コレクション(
FloatFloatMap
など)に置き換えられたときに前の値を返すput
のオーバーロードを追加しました。 MutableFloatFloatMap
など、プリミティブ コレクションのremoveIf
メソッドをインラインに変換します。これにより、removeIf
のラムダが割り当てられなくなります。
バージョン 1.4.0-alpha01
2023 年 10 月 4 日
androidx.collection:collection-*:1.4.0-alpha01
がリリースされました。バージョン 1.4.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
割り当てオーバーヘッドが低く、高パフォーマンスな、効率性の高い新しいコレクションが追加されました。
MutableScatterMap
とScatterMap
-MutableMap
と地図のような APIMutableScatterSet
とScatterSet
-MutableSet
とセット型 APIMutableObjectList
とObjectList
-MutableList
とList-like 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
です。ScatterMap/MutableScatterMap
でカバーされているため、ObjectObjectMap
という名前のバージョンはありません。
バージョン 1.3.0
バージョン 1.3.0
2023 年 10 月 4 日
androidx.collection:collection-*:1.3.0
がリリースされました。バージョン 1.3.0 に含まれる commit については、こちらをご覧ください。
1.2.0 以降の重要な変更
- Kotlin マルチプラットフォーム プロジェクトでコレクションを使用できるようになりました。なお、コレクションの Android 以外のターゲットはまだ試験運用版ですが、デベロッパーが簡単に試せるようにバージョンを統合することにしました。
- すべてのソースが Kotlin に移行されています。この変更の一環として、多くの API で null 可能性が適切に型指定され、一部のパッケージ プライベート メンバーが
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 に含まれる commit については、こちらをご覧ください。
バージョン 1.3.0-beta01
2023 年 8 月 9 日
androidx.collection:collection-*:1.3.0-beta01
がリリースされました。バージョン 1.3.0-beta01 に含まれる commit については、こちらをご覧ください。
バージョン 1.3.0-alpha04
2023 年 3 月 24 日
androidx.collection:collection-*:1.3.0-alpha04
がリリースされました。
バグの修正
- Kotlin ネイティブ ターゲットのビルドの問題を回避するために、Maven アーティファクトから依存関係の制約を削除しました(b/274786186、KT-57531)。
バージョン 1.3.0-alpha03
2023 年 3 月 22 日
androidx.collection:collection-*:1.3.0-alpha03
がリリースされました。バージョン 1.3.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
- KMM プロジェクトでコレクションを使用できるようになりました。なお、コレクションの Android 以外のターゲットはまだ試験運用版ですが、デベロッパーが簡単に試せるようにバージョンを統合することにしました。
API の変更
ArraySet
がAbstractMutableCollection
ではなくMutableCollections
を実装し、toArray
のメモリ効率の高い実装が可能になりました。(I1ac32)
バグの修正
ArraySet.toArray
はこれまで Java との互換性のみを目的としていたため、JVM でのみ使用できるようになりました。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 に含まれる commit については、こちらをご覧ください。
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 に含まれる commit については、こちらをご覧ください。
新機能
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)
を使用します
- 次の呼び出しの引数の型は、
- Kotlin ユーザーのオプションの引数として、
SparseArrayCompat
のオーバーロードされたコンストラクタを結合します。(If8407、b/227474719) SparseArrayCompat.get(key, defaultValue).
の演算子構文を削除しました。引き続き.get(key)
の演算子構文を使用できますが、SparseArrayCompat
の API サーフェスの方がこのライブラリ内の他のクラスには適しています。(I9a38d)LongSparseArray
拡張機能をメインのアーティファクト androidx.collection:collection に移行します。この変更により、既存ユーザーに対する互換性を維持しつつ、-ktx 依存関係を必要とすることなく、Kotlin ユーザーが既存の -ktx 拡張機能にアクセスできるようになります。メイン アーティファクトを Kotlin に移行したため、このような拡張機能を別の -ktx アーティファクトで維持するメリットがなくなりました。(I8659a)LongSparseArray
を Kotlin に変換します。この変更により、型に明示的な null 可能性が追加されます。これはバイナリ互換の変更ですが、ソースの非互換性が生じる場合があります。具体例: *.isEmpty
がプロパティとしてアクセスできなくなりました。Kotlin で関数呼び出しとしてアクセスする必要があります -.isEmpty()
(Idfd0f)SimpleArrayMap
を Kotlin に変換します。この変更により、いくつかの互換性のない変更が導入されます。これは、Java-Kotlin の相互運用性と、ソース内の型の null 可能性を正しく定義する機能によるものです。- パッケージの非公開 API
.mSize
、.mArray
、.mHashes
、.indexOf()
、.indexOfNull()
、.indexOfValue()
は非公開になりました。これは技術的にはバイナリ非互換の変更ですが、これらのフィールドの意図された可視性を反映しており、パッケージ プライベートの可視性を指定する方法が含まれていないため、Kotlin で達成できる最も近いものです。 - 一部の型の null 可能性が適切に定義されるようになりました。影響を受けるメソッドは、
.getOrDefault
、.keyAt
、.valueAt
、.setValueAt
、.put
、.putIfAbsent
、.removeAt
、.replace
です。 - Kotlin ユーザーの場合、
.isEmpty()
はプロパティ アクセスではなく、関数としてのみ使用できるようになりました。(I271b7、b/182813986)
- パッケージの非公開 API
CircularArray
を Kotlin に変換します。主な変更点:- ジェネリックの null 可能性を null 以外に修正しました。これは、以前は宣言できませんでしたが、すべての公開 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
が返されることはなくなりました。また、この変更により、以前はなかった一部の型に正しい 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 に含まれる commit については、こちらをご覧ください。
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 に含まれる commit については、こちらをご覧ください。
API の変更
- 以前のベータ版からの変更はありません
バージョン 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 に含まれる commit については、こちらをご覧ください。
バグの修正
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 に含まれる commit については、こちらをご覧ください。
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 に含まれる commit については、こちらをご覧ください。
以下に、1.0.0 から 1.1.0 への変更の概要を示します。
新機能
- 「collection-ktx」アーティファクトの
contains
関数とisNotEmpty
関数に効率の良い実装を使用します(aosp/866529)
API の変更
putIfAbsent
をLongSparseArray
、SimpleArrayMap
、SparseArrayCompat
に追加しました(aosp/772608)getOrDefault
をSimpleArrayMap
に追加しました(aosp/772607)- 2 つの引数の
remove
をLongSparseArray
、SimpleArrayMap
、SparseArrayCompat
に追加しました。この機能に対応する KTX 拡張機能のサポートを終了します(aosp/772482) - 2 つの引数の
replace
をLongSparseArray
、SimpleArrayMap
、SparseArrayCompat
に追加しました(aosp/772483) - 3 つの引数の
replace
をLongSparseArray
、SimpleArrayMap
、SparseArrayCompat
に追加しました(aosp/772484) - 冗長な
delete
メソッドのサポートを終了します。remove
メソッドが同じ API と機能を提供し、専門性の低いマップで使用される API に対応します(aosp/866053)
バグの修正
ArrayMap.class
ではなくSimpleArrayMap.class
の配列の内部グローバル キャッシュを同期させるようにSimpleArrayMap
を変更しました。これにより、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
がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
新機能
- 「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
がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
API の変更
@RestrictTo
値を変更したと alpha03 リリースノートで述べたメソッドを削除しました。現在に至るまでどの AndroidX ライブラリでも使用されておらず、公開 API にない機能は提供していませんでした。
バグの修正
ArrayMap.class
ではなくSimpleArrayMap.class
の配列の内部グローバル キャッシュを同期させるようにSimpleArrayMap
を変更しました。これにより、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
がリリースされました。このバージョンに含まれる commit の完全なリストについては、こちらをご覧ください。e
API の変更
- 以前
@RestrictTo(LIBRARY_GROUP)
としてマークされていたArraySet
のメソッドが@RestrictTo(LIBRARY_GROUP_PREFIX)
に変更されました。これは、現在は異なる Maven グループ ID にある他の AndroidX ライブラリによる従来どおりの使用をサポートするためです。このメソッドは、1.1.0-alpha04 で公開されるか削除されます。他のデベロッパーが取得しない特別な API を他の AndroidX ライブラリが取得すべきではないためです。
バージョン 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)- 2 つの引数の
remove
をLongSparseArray
、SimpleArrayMap
、SparseArrayCompat
に追加しました。この機能に対応する KTX 拡張機能のサポートを終了します(aosp/772482) - 2 つの引数の
replace
をLongSparseArray
、SimpleArrayMap
、SparseArrayCompat
に追加しました(aosp/772483) - 3 つの引数の
replace
をLongSparseArray
、SimpleArrayMap
、SparseArrayCompat
に追加しました(aosp/772484)