Bộ sưu tập

  
Giảm tác động của bộ sưu tập hiện có và bộ sưu tập mới (có kích thước nhỏ) lên bộ nhớ.
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành Alpha
Ngày 27 tháng 7 năm 2022 1.2.0 - - 1.3.0-alpha02

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc trên Bộ sưu tập, bạn phải thêm kho lưu trữ Google Maven vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm phần phụ thuộc cho cấu phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:

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")
}

Để biết thêm thông tin về các phần phụ thuộc, hãy xem nội dung Thêm phần phụ thuộc cho bản dựng.

Ý kiến phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 1.3.0

Phiên bản 1.3.0-alpha02

Ngày 27 tháng 7 năm 2022

Phát hành androidx.collection:collection:1.3.0-alpha02androidx.collection:collection-ktx:1.3.0-alpha02. Phiên bản 1.3.0-alpha02 chứa những cam kết này.

Thay đổi về API

  • SparseArrayCompat hiện có sẵn cho các nền tảng không phải jvm từ cấu phần phần mềm phổ biến (Ic9bd0, b/219589118, b/228347315)
  • CircularIntArray hiện có sẵn cho các nền tảng không phải jvm từ cấu phần phần mềm phổ biến (I3d8ef, b/228344943)
  • LongSparseArray hiện có sẵn cho các nền tảng không phải jvm từ cấu phần phần mềm phổ biến (I73149, b/228347315)

Phiên bản 1.3.0-alpha01

Ngày 29 tháng 6 năm 2022

Phát hành androidx.collection:collection:1.3.0-alpha01androidx.collection:collection-ktx:1.3.0-alpha01. Phiên bản 1.3.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • collection-ktx phần mở rộng đã được di chuyển vào cấu phần phần mềm chính của bộ sưu tập, androidx.collection:collection. Thay đổi này giúp người dùng Kotlin có thể truy cập vào các tiện ích -kt từ trước mà không cần phụ thuộc -ktx, trong khi vẫn duy trì khả năng tương thích đối với người dùng hiện có. Việc duy trì những tiện ích này trong một cấu phần phần mềm -ktx riêng biệt sẽ không còn có lợi vì cấu phần phần mềm chính đã chuyển sang Kotlin. (I6eef2)

Thay đổi về API

  • ArraySet hiện mở rộng AbstractMutableCollection và không còn triển khai trực tiếp giao diện Bộ sưu tập. (If6da0, b/230860589)
  • Đã chuyển đổi ArraySet thành Kotlin. Do thao tác nhập nghiêm ngặt hơn, một số lệnh gọi Kotlin có thể không biên dịch được nữa. (Id68c1, b/230860589)
    • Các lệnh gọi sau có loại đối số T, không phải T?:
      • ArraySet<T>.contains(null)
      • ArraySet<T>.add(null)
      • ArraySet<T>.remove(null)
    • Các lệnh gọi sau có loại trả về T?, không phải T!:
      • ArraySet<T?>.valueAt(n)
      • ArraySet<T?>.removeAt(n)
      • ArraySet<T?>().iterator().next()
    • Bạn sẽ không thể thực hiện các lệnh gọi sau đây từ Kotlin:
      • set.toArray() - sử dụng set.toTypedArray()
      • set.toArray(array) - sử dụng set.forEachIndexed(array::set)
  • Kết hợp hàm dựng quá tải cho SparseArrayCompat làm đối số không bắt buộc cho người dùng Kotlin. (If8407, b/227474719)
  • Xoá cú pháp toán tử cho SparseArrayCompat.get(key, defaultValue).. Thao tác này vẫn cho phép cú pháp toán tử của .get(key), nhưng điều chỉnh tốt hơn giao diện API của SparseArrayCompat với các lớp khác trong thư viện này. (I9a38d)
  • Di chuyển LongSparseArray tiện ích sang cấu phần phần mềm chính, androidx.collection:collection. Thay đổi này giúp người dùng Kotlin có thể truy cập vào các tiện ích -kt từ trước mà không cần phụ thuộc -ktx, trong khi vẫn duy trì khả năng tương thích đối với người dùng hiện có. Việc duy trì những tiện ích này trong một cấu phần phần mềm -ktx riêng biệt sẽ không còn có lợi vì cấu phần phần mềm chính đã chuyển sang Kotlin. (I8659a)
  • Chuyển đổi LongSparseArray thành Kotlin. Thay đổi này sẽ làm giảm giá trị null rõ ràng đối với các loại của thay đổi đó, đây là thay đổi tương thích nhị phân, nhưng có thể gây ra sự không tương thích nguồn. Cụ thể: * .isEmpty không còn truy cập được dưới dạng tài sản, bạn phải truy cập vào tài sản này dưới dạng lệnh gọi hàm trong Kotlin – .isEmpty() (Idfd0f)
  • Chuyển đổi SimpleArrayMap thành Kotlin. Thay đổi này tạo ra một vài thay đổi không tương thích do kết quả của việc tương tác Java-Kotlin và khả năng xác định chính xác tính chất rỗng của các loại trong nguồn.
    • Các API riêng tư của gói, .mSize, .mArray, .mHashes, .indexOf(), .indexOfNull().indexOfValue(), đã được chuyển sang chế độ riêng tư – đây về mặt kỹ thuật là thay đổi nhị phân không tương thích, nhưng thể hiện khả năng hiển thị dự định của các trường này và là giá trị gần nhất mà chúng tôi có thể đạt được trong Kotlin vì nó không bao gồm cách chỉ định chế độ hiển thị riêng tư về gói.
    • Tính chất rỗng của một số loại hiện đã được xác định đúng, các phương thức bị ảnh hưởng là: .getOrDefault, .keyAt, .valueAt, .setValueAt, .put, .putIfAbsent, .removeAt, .replace.
    • Đối với người dùng Kotlin, giờ đây, .isEmpty() chỉ dùng được dưới dạng hàm thay vì quyền truy cập vào thuộc tính. (I271b7, b/182813986)
  • Chuyển đổi CircularArray thành Kotlin. Các thay đổi đáng chú ý:

    • Sửa giá trị null của các giá trị chung thành giá trị null, điều này trước đây không thể khai báo, nhưng đã được thực thi trong tất cả các API công khai.
    • Do khả năng tương tác Java của Kotlin, trước đây bạn có thể truy cập vào một số phương thức nhất định dưới dạng cả thuộc tính hoặc hàm. Tuy nhiên, để giảm sự trùng lặp trong khi vẫn duy trì khả năng tương thích nhị phân, bạn cần phải xóa các thay đổi này. Đây là một thay đổi không tương thích với nguồn. Các lệnh gọi bị ảnh hưởng là: .isEmpty, .getLast().getFirst(). (Ifffac)
  • Chuyển đổi CircularIntArray thành Kotlin. Do khả năng tương tác Java của Kotlin, trước đây bạn có thể truy cập vào một số phương thức nhất định dưới dạng cả thuộc tính hoặc hàm. Tuy nhiên, để giảm tình trạng trùng lặp trong khi vẫn duy trì khả năng tương thích nhị phân, bạn cần phải xóa những nội dung này. Đây là thay đổi không tương thích với nguồn. Các cuộc gọi bị ảnh hưởng là: .isEmpty, .getLast().getFirst(). (Ie36ce)

  • Chuyển đổi LruCache thành Kotlin (Ia2f19)

  • Chuyển đổi SparseArrayCompat thành Kotlin. (If6fe8)

    Một thay đổi nhỏ về hành vi được thêm vào SparseArrayCompat.valueAt(), không còn trả về null một cách không chính xác cho các lệnh gọi chưa khởi tạo nằm ngoài giới hạn của size() nhưng trong phạm vi dung lượng ban đầu đã cung cấp.

    Thay đổi này cũng áp dụng giá trị null chính xác cho một số loại trước đây bị thiếu.

    • .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)

Phiên bản 1.2.0

Phiên bản 1.2.0

Ngày 1 tháng 12 năm 2021

Phát hành androidx.collection:collection:1.2.0androidx.collection:collection-ktx:1.2.0. Phiên bản 1.2.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 1.1.0

  • Thêm một hàm khởi tạo mảng vào ArraySet. (Id7f19)
  • Bảo đảm entrySet() tuân thủ API bằng việc triển khai entrySet().toArray(), remove(), removeAll()retainAll(), đồng thời xoá phương thức triển khai entrySet().addAll() (I5d505)

Phiên bản 1.2.0-rc01

Ngày 17 tháng 11 năm 2021

Phát hành androidx.collection:collection:1.2.0-rc01androidx.collection:collection-ktx:1.2.0-rc01. Phiên bản 1.2.0-rc01 bao gồm các thay đổi sau.

Thay đổi về API

  • Không có thay đổi nào so với phiên bản thử nghiệm trước đó.

Phiên bản 1.2.0-beta01

Ngày 13 tháng 10 năm 2021

Phát hành androidx.collection:collection:1.2.0-beta01androidx.collection:collection-ktx:1.2.0-beta01. Phiên bản 1.2.0-beta01 bao gồm các thay đổi sau.

Sửa lỗi

  • Bảo đảm entrySet() tuân thủ API bằng việc triển khai entrySet().toArray(), remove(), removeAll()retainAll(), đồng thời xoá phương thức triển khai entrySet().addAll() (I5d505)

Phiên bản 1.2.0-alpha01

Ngày 16 tháng 12 năm 2020

Phát hành androidx.collection:collection:1.2.0-alpha01androidx.collection:collection-ktx:1.2.0-alpha01. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.

Thay đổi về API

  • Thêm một hàm khởi tạo mảng vào ArraySet. (Id7f19)

Phiên bản 1.1.0

Phiên bản 1.1.0

Ngày 5 tháng 6 năm 2019

Phát hành androidx.collection:collection:1.1.0androidx.collection:collection-ktx:1.1.0. Bạn có thể tìm các thay đổi có trong phiên bản 1.1.0 tại đây.

Dưới đây là bản tóm tắt các thay đổi từ phiên bản 1.0.0 đến 1.1.0:

Tính năng mới

  • Sử dụng cách triển khai hiệu quả hơn cho các hàm containsisNotEmpty trong cấu phần phần mềm 'collection-ktx'. (aosp/866529)

Thay đổi về API

  • Thêm putIfAbsent vào LongSparseArray, SimpleArrayMapSparseArrayCompat (aosp/772608)
  • Thêm getOrDefault vào SimpleArrayMap (aosp/772607)
  • Thêm remove hai đối số vào LongSparseArray, SimpleArrayMapSparseArrayCompat. Ngừng sử dụng các tiện ích mở rộng KTX tương ứng cho chức năng này. (aosp/772482)
  • Thêm replace hai đối số vào LongSparseArray, SimpleArrayMapSparseArrayCompat (aosp/772483)
  • Thêm replace ba đối số vào LongSparseArray, SimpleArrayMapSparseArrayCompat (aosp/772484)
  • Ngừng sử dụng các phương thức delete thừa. Phương thức remove cung cấp API và chức năng giống nhau và khớp với API do Maps đặc biệt sử dụng. (aosp/866053)

Sửa lỗi

  • Thay đổi SimpleArrayMap để đồng bộ hoá bộ nhớ đệm toàn cầu nội bộ của các mảng trên SimpleArrayMap.class thay vì ArrayMap.class. Điều này đảm bảo rằng nếu bạn chỉ đang sử dụng SimpleArrayMap, thì bạn có thể xoá ArrayMap bằng các công cụ rút gọn mã. (aosp/934557)

Phiên bản 1.1.0-rc01

Ngày 7 tháng 5 năm 2019

Phát hành androidx.collection:collection:1.1.0-rc01androidx.collection:collection-ktx:1.1.0-rc01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Tính năng mới

  • Sử dụng cách triển khai hiệu quả hơn cho các hàm containsisNotEmpty trong cấu phần phần mềm 'collection-ktx'. (aosp/866529)

Phiên bản 1.1.0-beta01

Ngày 3 tháng 4 năm 2019

Phát hành androidx.collection:collection:1.1.0-beta01androidx.collection:collection-ktx:1.1.0-beta01. Bạn có thể tìm thấy các cam kết có trong phiên bản này tại đây.

Thay đổi về API

  • Phương thức được đề cập trong ghi chú phát hành alpha03 vì thay đổi giá trị @RestrictTo đã bị xoá. Thư viện AndroidX (hiện tại hoặc trước đây) không sử dụng phương thức này và phương thức này không cung cấp bất kỳ chức năng nào bị thiếu trong API công khai.

Sửa lỗi

  • Thay đổi SimpleArrayMap để đồng bộ hoá bộ nhớ đệm toàn cầu nội bộ của các mảng trên SimpleArrayMap.class thay vì ArrayMap.class. Điều này đảm bảo rằng nếu bạn chỉ đang sử dụng SimpleArrayMap, thì bạn có thể xoá ArrayMap bằng các công cụ rút gọn mã. (aosp/934557)

Phiên bản 1.1.0-alpha03

Ngày 13 tháng 3 năm 2019

Phát hành androidx.collection:collection:1.0.0-alpha03androidx.collection:collection-ktx:1.0.0-alpha03. Bạn có thể xem danh sách đầy đủ các thay đổi trong phiên bản này tại đây.

Thay đổi về API

  • Phương thức trên ArraySet trước đây được đánh dấu là @RestrictTo(LIBRARY_GROUP) đã được thay đổi thành @RestrictTo(LIBRARY_GROUP_PREFIX). Điều này hỗ trợ việc sử dụng trước đó của các thư viện AndroidX khác, hiện nằm trong các mã nhận dạng nhóm Maven khác. Phương thức này sẽ được công khai hoặc bị xoá trong 1.1.0-alpha04 vì các thư viện AndroidX khác sẽ không được nhận các API đặc biệt nếu các nhà phát triển khác không làm như vậy.

Phiên bản 1.1.0-alpha02

Ngày 30 tháng 1 năm 2019

Phát hành androidx.collection:collection 1.1.0-alpha02androidx.collection:collection-ktx 1.1.0-alpha02.

Thay đổi về API

  • Ngừng sử dụng các phương thức delete thừa. Các phương thức remove cung cấp API và chức năng giống nhau và khớp với API do Maps đặc biệt sử dụng. (aosp/866053)

Phiên bản 1.1.0-alpha01

Ngày 3 tháng Mười hai, 2018

Thay đổi về API

  • Thêm putIfAbsent vào LongSparseArray, SimpleArrayMapSparseArrayCompat (aosp/772608)
  • Thêm getOrDefault vào SimpleArrayMap (aosp/772607)
  • Thêm remove hai đối số vào LongSparseArray, SimpleArrayMapSparseArrayCompat. Ngừng sử dụng các tiện ích mở rộng KTX tương ứng cho chức năng này. (aosp/772482)
  • Thêm replace hai đối số vào LongSparseArray, SimpleArrayMapSparseArrayCompat (aosp/772483)
  • Thêm replace ba đối số vào LongSparseArray, SimpleArrayMapSparseArrayCompat (aosp/772484)