コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

コレクション

  
小規模な既存のコレクションおよび新しいコレクションのメモリへの影響を軽減します。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
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-alpha02androidx.collection:collection-ktx:1.3.0-alpha02 がリリースされました。バージョン 1.3.0-alpha02 に含まれる commit については、こちらをご覧ください

API の変更

  • SparseArrayCompat が、共通のアーティファクトから JVM 以外のプラットフォームで利用できるようになりました。(Ic9bd0b/219589118b/228347315
  • CircularIntArray が、共通のアーティファクトから JVM 以外のプラットフォームで利用できるようになりました。(I3d8efb/228344943
  • LongSparseArray が、共通のアーティファクトから JVM 以外のプラットフォームで利用できるようになりました。(I73149b/228347315

バージョン 1.3.0-alpha01

2022 年 6 月 29 日

androidx.collection:collection:1.3.0-alpha01androidx.collection:collection-ktx:1.3.0-alpha01 がリリースされました。バージョン 1.3.0-alpha01 に含まれるコミットについては、こちらをご覧ください

新機能

  • collection-ktx 拡張機能がメインのコレクション アーティファクト androidx.collection:collection に移行されました。この変更により、既存ユーザーに対する互換性を維持しつつ、-ktx 依存関係を必要とすることなく、Kotlin ユーザーが既存の -ktx 拡張機能にアクセスできるようになります。メイン アーティファクトを Kotlin に移行したため、このような拡張機能を別の -ktx アーティファクトで維持するメリットがなくなりました。(I6eef2

API の変更

  • ArraySetAbstractMutableCollection を拡張し、Collection インターフェースを直接実装しなくなりました。(If6da0b/230860589
  • ArraySet を Kotlin に変換しました。入力が厳密になったため、一部の Kotlin 呼び出しはコンパイルされなくなる場合があります。(Id68c1b/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 のオーバーロードされたコンストラクタを結合します。(If8407b/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() はプロパティ アクセスではなく、関数としてのみ使用できるようになりました。(I271b7b/182813986
  • 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.0androidx.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-rc01androidx.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-beta01androidx.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-alpha01androidx.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.0androidx.collection:collection-ktx:1.1.0 がリリースされました。1.1.0 に含まれる commit については、こちらをご覧ください。

以下に、1.0.0 から 1.1.0 への変更の概要を示します。

新機能

  • 「collection-ktx」アーティファクトの contains 関数と isNotEmpty 関数に効率の良い実装を使用します(aosp/866529

API の変更

  • putIfAbsentLongSparseArraySimpleArrayMapSparseArrayCompat に追加しました(aosp/772608
  • getOrDefaultSimpleArrayMap に追加しました(aosp/772607
  • 2 つの引数の removeLongSparseArraySimpleArrayMapSparseArrayCompat に追加しました。この機能に対応する KTX 拡張機能のサポートを終了します(aosp/772482
  • 2 つの引数の replaceLongSparseArraySimpleArrayMapSparseArrayCompat に追加しました(aosp/772483
  • 3 つの引数の replaceLongSparseArraySimpleArrayMapSparseArrayCompat に追加しました(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-rc01androidx.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-beta01androidx.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-alpha03androidx.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-alpha02androidx.collection:collection-ktx 1.1.0-alpha02 がリリースされました。

API の変更

  • 冗長な delete メソッドのサポートを終了します。remove メソッドが同じ API と機能を提供し、専門性の低いマップで使用される API に対応します(aosp/866053

バージョン 1.1.0-alpha01

2018 年 12 月 3 日

API の変更

  • putIfAbsentLongSparseArraySimpleArrayMapSparseArrayCompat に追加しました(aosp/772608
  • getOrDefaultSimpleArrayMap に追加しました(aosp/772607
  • 2 つの引数の removeLongSparseArraySimpleArrayMapSparseArrayCompat に追加しました。この機能に対応する KTX 拡張機能のサポートを終了します(aosp/772482
  • 2 つの引数の replaceLongSparseArraySimpleArrayMapSparseArrayCompat に追加しました(aosp/772483
  • 3 つの引数の replaceLongSparseArraySimpleArrayMapSparseArrayCompat に追加しました(aosp/772484