コレクション
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2022 年 7 月 27 日 | 1.2.0 | - | - | 1.3.0-alpha02 |
依存関係の宣言
Collection への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { def collection_version = "1.2.0" // Java language implementation implementation "androidx.collection:collection:$collection_version" // Kotlin implementation "androidx.collection:collection-ktx:$collection_version" }
Kotlin
dependencies { val collection_version = "1.2.0" // Java language implementation implementation("androidx.collection:collection:$collection_version") // Kotlin implementation("androidx.collection:collection-ktx:$collection_version") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.3.0
バージョン 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 に含まれるコミットについては、こちらをご覧ください。
新機能
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)