コレクション

  
小規模な既存のコレクションおよび新しいコレクションのメモリへの影響を軽減します。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
2024 年 9 月 4 日 1.4.3 - - 1.5.0-alpha01

依存関係の宣言

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.5

バージョン 1.5.0-alpha01

2024 年 9 月 4 日

androidx.collection:collection-*:1.5.0-alpha01 がリリースされました。バージョン 1.5.0-alpha01 に含まれる commit については、こちらをご覧ください。

API の変更

  • OrderedScatterSet は、新しくオーダーされた割り当てのないコレクションです。(Ic4178
  • SieveCache は、LruCache に代わる割り当てのない新しいもので、ヒット率の特性が改善されています。(I50a17)。
  • IntIntPairFloatFloatPairpackedValue 内部表現を公開しました。(Ifeb75b/331853566)。
  • リスト コレクション内のコンテンツ配列へのアクセス権を追加します。(I899d5b/333903173)。
  • Double 値向けに最適化されたリスト形式のデータ構造 DoubleList を追加します。(Ia10d1b/315127635)。

バグの修正

  • コレクション ライブラリが Kotlin 1.9 をターゲットとするように移行します(I0782f)。
  • コレクションの多くを最適化して効率を高めます。(Ic0566)。

バージョン 1.4

バージョン 1.4.3

2024 年 8 月 7 日

androidx.collection:collection-*:1.4.3 がリリースされました。バージョン 1.4.3 に含まれる commit については、こちらをご覧ください。

バグの修正

  • ScatterMapScatterSet、およびそのプリミティブ バリアントで発生する可能性のある破損を修正しました。(I38a4ab/352560465)。
  • パフォーマンスの最適化。特に、以下の点に注意してください。 <ph type="x-smartling-placeholder">
      </ph>
    • check()required() の呼び出しを、インライン例外をスローしないバリアントに置き換えます。これにより、最終的なバイナリサイズが小さくなり、さらに重要なこととして、i キャッシュの負荷が若干軽減されます。
    • 「スキャッター」の removeDeletedMarkers() を改善しましたコレクションのファミリーです。新しいバージョンは、削除されたマーカーを一度に 8 つのマーカーを一度に消去し、そのプロセスで高コストな書き込みをスキップします。(Ic0566)。

バージョン 1.4.2

2024 年 7 月 24 日

androidx.collection:collection-*:1.4.2 がリリースされました。バージョン 1.4.2 に含まれる commit については、こちらをご覧ください。

新機能

  • 追加の Kotlin マルチプラットフォーム ターゲット(watchostvoslinuxArm64)が含まれています。(b/352543988)。

バージョン 1.4.1

2024 年 7 月 10 日

androidx.collection:collection-*:1.4.1 がリリースされました。バージョン 1.4.1 に含まれる commit については、こちらをご覧ください。

バグの修正

  • サイズ変更時に Map/Set から削除された tombstone を削除する。(7a996c5b/345960092)。

バージョン 1.4.0

2024 年 1 月 24 日

androidx.collection:collection-*:1.4.0 がリリースされました。バージョン 1.4.0 に含まれる commit については、こちらをご覧ください

1.3.0 以降の重要な変更

ボクシングなしでプリミティブを保存するための新しい高効率コレクションが追加されました。

  • MutableScatterMapScatterMap - MutableMap と地図のような API
  • MutableScatterSetScatterSet - MutableSet とセット型 API
  • MutableObjectListObjectList - 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() イテレータが新しいインスタンスを返すようになりました(I28932b/310365754)。

バージョン 1.4.0-beta01

2023 年 11 月 15 日

androidx.collection:collection-*:1.4.0-beta01 がリリースされました。バージョン 1.4.0-beta01 に含まれる commit については、こちらをご覧ください

バグの修正

  • ListIteratorObjectList に値を誤って設定していた場合、IndexOutOfBoundsException が原因でクラッシュする可能性があります。(I3bd8ab/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 については、こちらをご覧ください

新機能

割り当てオーバーヘッドが低く、高パフォーマンスな、効率性の高い新しいコレクションが追加されました。

  • MutableScatterMapScatterMap - MutableMap と地図のような API
  • MutableScatterSetScatterSet - MutableSet とセット型 API
  • MutableObjectListObjectList - 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/274786186KT-57531)。

バージョン 1.3.0-alpha03

2023 年 3 月 22 日

androidx.collection:collection-*:1.3.0-alpha03 がリリースされました。バージョン 1.3.0-alpha03 に含まれる commit については、こちらをご覧ください

新機能

  • KMM プロジェクトでコレクションを使用できるようになりました。なお、コレクションの Android 以外のターゲットはまだ試験運用版ですが、デベロッパーが簡単に試せるようにバージョンを統合することにしました。

API の変更

  • ArraySetAbstractMutableCollection ではなく MutableCollections を実装し、toArray のメモリ効率の高い実装が可能になりました。(I1ac32

バグの修正

  • ArraySet.toArray はこれまで Java との互換性のみを目的としていたため、JVM でのみ使用できるようになりました。Kotlin ユーザーは、通常は stdlib の .toTypedArray ヘルパーを使用する必要があります。これにより、まったく同じ機能が提供され、さらに型安全性が追加されます。(I2c59b)。

バージョン 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 に含まれる commit については、こちらをご覧ください

新機能

  • 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