คอลเล็กชัน

  
ลดผลกระทบต่อหน่วยความจำของคอลเล็กชันที่มีอยู่และคอลเล็กชันใหม่ที่มีขนาดเล็ก
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
14 มกราคม 2026 1.5.0 - 1.6.0-beta01 -

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ใน Collection คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google

เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ แอปหรือโมดูล

Groovy

dependencies {
    def collection_version = "1.5.0"
    implementation "androidx.collection:collection:$collection_version"
}

Kotlin

dependencies {
    val collection_version = "1.5.0"
    implementation("androidx.collection:collection:$collection_version")
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์

ความคิดเห็น

ความคิดเห็นของคุณช่วยให้ Jetpack ทำงานได้ดีขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา

เวอร์ชัน 1.6

เวอร์ชัน 1.6.0-beta01

14 มกราคม 2026

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.6.0-beta01 เวอร์ชัน 1.6.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มส่วนขยาย .toScatterSet() และ .toScatterMap() ซึ่งเป็นทางเลือกแบบอ่านอย่างเดียวสำหรับฟังก์ชัน Conversion ที่เปลี่ยนแปลงได้ และจะแสดงผล Singleton ที่ไม่มีการจัดสรรเมื่อคอลเล็กชันแหล่งที่มาว่างเปล่า (I1769a, b/459867876)
  • แทนที่ตัวสร้างเทียม MutableScatterMap(source) และ MutableScatterSet(source) ด้วยฟังก์ชันส่วนขยาย .toMutableScatterMap() และ .toMutableScatterSet() มาตรฐาน ซึ่งสอดคล้องกับรูปแบบของ Kotlin สำหรับการแปลงคอลเล็กชัน (Ic9ca6, b/459867876)
  • เพิ่มฟังก์ชันจากโรงงาน MutableScatterMap(Map) และ MutableScatterSet(Set) ใช้ฟังก์ชันเหล่านี้เพื่อสร้างคอลเล็กชันแบบกระจายที่กรอกข้อมูลล่วงหน้าด้วยเนื้อหาของคอลเล็กชันที่มีอยู่ได้อย่างง่ายดาย (I51d70)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นการใช้งานประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง: -Xjspecify-annotations=strict (นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (I05181, b/326456246)

เวอร์ชัน 1.6.0-alpha01

27 สิงหาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.6.0-alpha01 เวอร์ชัน 1.6.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)

การแก้ไขข้อบกพร่อง

  • ก่อนหน้านี้ SparseArrayCompat จะแสดงผล null สำหรับ valueAt และ keyAt เมื่อส่งดัชนีที่อยู่ในช่วงที่จัดสรร แต่ไม่อยู่ในช่วงที่แทรก 0..size -1 ตามที่ระบุไว้ การทำงานนี้ไม่เคยคาดการณ์ไว้และอยู่นอกช่วงอินพุตที่ถูกต้อง การเปลี่ยนแปลงนี้จะแก้ไขการทำงานนี้เพื่อส่ง IndexOutOfBounds แทนเมื่อส่งดัชนีที่ไม่ถูกต้อง (I68453)

การมีส่วนร่วมภายนอก

ขอขอบคุณ Jake Wharton สำหรับการมีส่วนร่วมต่อไปนี้

  • จัดแนวjoinToStringลักษณะการทำงานให้สอดคล้องกับคอลเล็กชันของแพลตฟอร์มโดยเพิ่มตัวคั่นก่อนและคำต่อท้ายหลังตัวบ่งชี้การตัดทอนเมื่อจำกัดองค์ประกอบที่รวมไว้ (I1b7e8)
  • ScatterSet.hashCode ไม่ได้ป้องกันการเรียกซ้ำอีกต่อไป (กล่าวคือ ระบบจะเพิ่มชุดข้อมูลลงในตัวมันเอง) ซึ่งจะทำให้ลักษณะการทำงานของฟีเจอร์นี้สอดคล้องกับ ScatterMap, HashSet และชุดข้อมูลแบบกระจายดั้งเดิม (เช่น LongSet) โปรดทราบว่าวิธีการ equals มีความเสี่ยงต่อการเรียกซ้ำอยู่แล้ว และ toString ป้องกันการเรียกซ้ำ ซึ่งทั้ง 2 ลักษณะการทำงานนี้สอดคล้องกับคอลเล็กชันอื่นๆ (I9c84a)
  • ตอนนี้ฟังก์ชัน ScatterSet.retainAll อยู่ในบรรทัดเพื่อหลีกเลี่ยงการสร้างอินสแตนซ์ Lambda (Ifa4b7)
  • ScatterSet.hashCode ไม่ใช้ความจุในการคำนวณแฮชอีกต่อไป ซึ่งจะช่วยให้เนื้อหาที่เท่ากันแต่มีความจุต่างกันยังคงสร้างค่าเดียวกันได้ (Ic863b)
  • ตอนนี้ระบบจะแสดง IllegalStateException หากคุณเรียกใช้ remove() ก่อน next() ในตัววนซ้ำของคอลเล็กชัน keys, values หรือ entries ของ ScatterMap.asMap() หรือ ScatterSet.asSet() ซึ่งจะทำให้ลักษณะการทำงานของฟีเจอร์นี้สอดคล้องกับลักษณะการทำงานของแผนที่ปกติและชุด (I71694)

รุ่น 1.5

เวอร์ชัน 1.5.0

12 มีนาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0 เวอร์ชัน 1.5.0 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.5.0-rc01

26 กุมภาพันธ์ 2025

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0-rc01 เวอร์ชัน 1.5.0-rc01 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.5.0-beta03

29 มกราคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0-beta03 เวอร์ชัน 1.5.0-beta03 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.5.0-beta02

15 มกราคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0-beta02 เวอร์ชัน 1.5.0-beta02 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.5.0-beta01

11 ธันวาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0-beta01 เวอร์ชัน 1.5.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มการรองรับเป้าหมาย watchosDeviceArm64 KMP และ Kotlin 1.9 (Icf15d, b/364652024)

เวอร์ชัน 1.5.0-alpha06

13 พฤศจิกายน 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0-alpha06 เวอร์ชัน 1.5.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องที่อาจเกิดขึ้นใน SieveCache และ OrderedScatterSet เมื่อเพิ่มรายการจำนวนมากซึ่งทำให้เกิดการชนกันของคีย์ซ้ำๆ (Iaaf3d, b/375607736)
  • เพิ่มเป้าหมาย wasm ลงในไลบรารีของคอลเล็กชัน (I66fe3, b/352722444)

เวอร์ชัน 1.5.0-alpha05

30 ตุลาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0-alpha05 เวอร์ชัน 1.5.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.5.0-alpha04

16 ตุลาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0-alpha04 เวอร์ชัน 1.5.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.5.0-alpha03

2 ตุลาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0-alpha03 เวอร์ชัน 1.5.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • อัปเดต Kotlin เป็นเวอร์ชัน 1.9 (I1a14c)

การมีส่วนร่วมภายนอก

  • เดินหน้า contains ไปยัง containsKey ขอขอบคุณ Jake Wharton (I9362b)
  • เพิ่มตัวสร้างคอนเทนเนอร์สำหรับคอลเล็กชันที่เชี่ยวชาญด้านสเกลาร์ ขอขอบคุณ Jake Wharton (I13179)

เวอร์ชัน 1.5.0-alpha02

18 กันยายน 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0-alpha02 เวอร์ชัน 1.5.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มการรองรับเป้าหมายแพลตฟอร์ม watchosDeviceArm64 (I1cc04, b/364652024)

เวอร์ชัน 1.5.0-alpha01

4 กันยายน 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.5.0-alpha01 เวอร์ชัน 1.5.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • OrderedScatterSet คือคอลเล็กชันใหม่ที่เรียงตามลำดับและไม่มีการจัดสรร (Ic4178)
  • SieveCache เป็นการแทนที่ LruCache แบบใหม่ที่ไม่ต้องจัดสรร ซึ่งมีลักษณะอัตราการเข้าชมที่ดีกว่า (I50a17)
  • แสดงการแทนภายในของ packedValue สำหรับ IntIntPair และ FloatFloatPair (Ifeb75, b/331853566)
  • การเพิ่มสิทธิ์เข้าถึงอาร์เรย์เนื้อหาในคอลเล็กชันรายการ (I899d5, b/333903173)
  • เพิ่ม DoubleList ซึ่งเป็นโครงสร้างข้อมูลที่คล้ายรายการซึ่งได้รับการเพิ่มประสิทธิภาพสำหรับค่า Double (Ia10d1, b/315127635)

การแก้ไขข้อบกพร่อง

  • ไลบรารีคอลเล็กชันจะย้ายไปใช้ Kotlin 1.9 (I0782f)
  • เพิ่มประสิทธิภาพคอลเล็กชันจำนวนมากเพื่อให้มีประสิทธิภาพมากขึ้น (Ic0566)

เวอร์ชัน 1.4

เวอร์ชัน 1.4.5

30 ตุลาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.4.5 เวอร์ชัน 1.4.5 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.4.4

18 กันยายน 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.4.4 เวอร์ชัน 1.4.4 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • วิธีแก้ปัญหาเฉพาะหน้า ArrayIndexOutOfBounds เมื่อจัดเรียงคอลเล็กชันที่ว่างเปล่า (I65245)

เวอร์ชัน 1.4.3

7 สิงหาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.4.3 เวอร์ชัน 1.4.3 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขการเสียหายที่อาจเกิดขึ้นใน ScatterMap, ScatterSet และตัวแปรดั้งเดิมของรายการดังกล่าว (I38a4a, b/352560465)
  • การเพิ่มประสิทธิภาพ โดยเฉพาะอย่างยิ่ง
    • แทนที่การเรียกใช้ check() และ required() ด้วยตัวแปรที่ไม่ได้แทรกข้อยกเว้น ซึ่งจะช่วยลดขนาดไบนารีสุดท้ายและที่สำคัญกว่านั้นคือช่วยลดแรงกดดันของ i-cache ได้เล็กน้อย
    • ปรับปรุง removeDeletedMarkers() ในคอลเล็กชันตระกูล "กระจาย" เวอร์ชันใหม่จะล้างเครื่องหมายที่ลบแล้วครั้งละ 8 เครื่องหมาย และข้ามการเขียนที่มีค่าใช้จ่ายสูงกว่าในกระบวนการนี้ (Ic0566)

เวอร์ชัน 1.4.2

24 กรกฎาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.4.2 เวอร์ชัน 1.4.2 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • รวมถึงเป้าหมาย Kotlin Multiplatform เพิ่มเติม: watchos, tvos, linuxArm64 (b/352543988)

เวอร์ชัน 1.4.1

10 กรกฎาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.4.1 เวอร์ชัน 1.4.1 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • นำเครื่องหมายหลุมศพที่ลบออกจาก Map/Set เมื่อปรับขนาด (7a996c5, b/345960092)

เวอร์ชัน 1.4.0

24 มกราคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.4.0 เวอร์ชัน 1.4.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงสำคัญตั้งแต่เวอร์ชัน 1.3.0

เพิ่มคอลเล็กชันใหม่ที่มีประสิทธิภาพสูงสำหรับการจัดเก็บประเภทข้อมูลพื้นฐานโดยไม่ต้อง Boxing แล้ว

  • MutableScatterMap และ ScatterMap - คลาสที่มี MutableMap และ API ที่คล้ายแผนที่
  • MutableScatterSet และ ScatterSet - คลาสที่มี MutableSet และ API ที่คล้ายกับชุด
  • MutableObjectList & ObjectList - คลาสที่มี MutableList & API ที่คล้ายรายการ

เช่น แมปที่มีคีย์เป็นจำนวนเต็มและค่าเป็นประเภทการอ้างอิงคือ IntObjectMap<T> แผนที่ที่มีคีย์ยาวและค่าลอยตัวคือ LongFloatMap ไม่มีเวอร์ชันที่มีชื่อ ObjectObjectMap เนื่องจาก ScatterMap/MutableScatterMap ครอบคลุมอยู่แล้ว

เวอร์ชัน 1.4.0-rc01

10 มกราคม 2024

androidx.collection:collection-*:1.4.0-rc01 จะเผยแพร่โดยไม่มีการเปลี่ยนแปลง เวอร์ชัน 1.4.0-rc01 มีคอมมิตเหล่านี้

เวอร์ชัน 1.4.0-beta02

29 พฤศจิกายน 2023

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.4.0-beta02 เวอร์ชัน 1.4.0-beta02 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ปรับปรุงประสิทธิภาพของ FloatFloatPair (If5537)

การแก้ไขข้อบกพร่อง

  • ScatterMap.asMap() ตอนนี้ Iterator จะแสดงผลอินสแตนซ์ใหม่ (I28932, b/310365754)

เวอร์ชัน 1.4.0-beta01

15 พฤศจิกายน 2023

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.4.0-beta01 เวอร์ชัน 1.4.0-beta01 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาListIteratorการตั้งค่าที่ไม่ถูกต้องใน ObjectList ซึ่งอาจทำให้เกิดข้อขัดข้องเนื่องจาก IndexOutOfBoundsException (I3bd8a, b/307049391)

เวอร์ชัน 1.4.0-alpha02

18 ตุลาคม 2023

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.4.0-alpha02 เวอร์ชัน 1.4.0-alpha02 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • เพิ่มการโอเวอร์โหลดสำหรับ put ที่แสดงผลค่าก่อนหน้าเมื่อมีการแทนที่คอลเล็กชันดั้งเดิมทั้งหมด เช่น FloatFloatMap
  • แปลงเมธอด removeIf ในคอลเล็กชันดั้งเดิม เช่น MutableFloatFloatMap เป็นแบบอินไลน์ ซึ่งช่วยให้มั่นใจได้ว่าจะไม่มีการจัดสรร Lambda สำหรับ removeIf

เวอร์ชัน 1.4.0-alpha01

4 ตุลาคม 2023

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.4.0-alpha01 เวอร์ชัน 1.4.0-alpha01 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

เราได้เพิ่มคอลเล็กชันประสิทธิภาพสูงใหม่ซึ่งมีค่าใช้จ่ายในการจัดสรรต่ำและมีประสิทธิภาพสูง ดังนี้

  • MutableScatterMap & ScatterMap - Classes with MutableMap & Map-like API
  • MutableScatterSet และ ScatterSet - คลาสที่มี MutableSet และ API ที่คล้ายกับชุด
  • MutableObjectList และ ObjectList - คลาสที่มี MutableList และ API ที่คล้ายรายการ

เพิ่มคอลเล็กชันใหม่ที่มีประสิทธิภาพสูงสำหรับการจัดเก็บประเภทข้อมูลพื้นฐานโดยไม่ต้อง Boxing แล้ว

  • Mutable[Int|Float|Long]List - คลาสที่มี API คล้ายกับ MutableList<Int|Float|Long> นอกจากนี้ ยังมี[Int|Float|Long]Listแบบอ่านอย่างเดียวด้วย เช่น จัดเก็บจำนวนเต็มใน IntList
  • Mutable[Int|Float|Long]Set - คลาสที่มี API คล้ายกับ MutableSet<Int|Float|Long> นอกจากนี้ ยังมี[Int|Float|Long]Setแบบอ่านอย่างเดียวด้วย เช่น จัดเก็บจำนวนเต็มใน IntSet ได้
  • Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map - คลาสที่มี API คล้ายกับ Mutable<Int|Float|Long,T, Int|Float|Long|T> นอกจากนี้ ยังมี[Int|Float|Long|Object][Int|Float|Long|Object]Mapแบบอ่านอย่างเดียวด้วย เช่น แมปที่มีคีย์เป็นจำนวนเต็มและค่าเป็นประเภทการอ้างอิงคือ IntObjectMap<T> แผนที่ที่มีคีย์ยาวและค่าลอยตัวคือ LongFloatMap ไม่มีเวอร์ชันที่มีชื่อ ObjectObjectMap เนื่องจาก ScatterMap/MutableScatterMap ครอบคลุมอยู่แล้ว

เวอร์ชัน 1.3.0

เวอร์ชัน 1.3.0

4 ตุลาคม 2023

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.3.0 เวอร์ชัน 1.3.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0

  • ตอนนี้คุณใช้คอลเล็กชันในโปรเจ็กต์ Kotlin Multiplatform ได้แล้ว โปรดทราบว่าเป้าหมายที่ไม่ใช่ Android ของคอลเล็กชันยังคงเป็นเวอร์ชันทดลอง แต่เราตัดสินใจที่จะผสานรวมเวอร์ชันต่างๆ เพื่อให้นักพัฒนาแอปทดลองใช้ได้ง่ายขึ้น
  • เราได้ย้ายข้อมูลแหล่งที่มาทั้งหมดไปยัง Kotlin แล้ว การเปลี่ยนแปลงนี้ทำให้ตอนนี้ API หลายรายการได้รับการกำหนดประเภทอย่างถูกต้องสำหรับค่า Null และสมาชิกแบบแพ็กเกจส่วนตัวบางรายการได้กลายเป็น internal ดูรายการการเปลี่ยนแปลงที่แน่นอนได้ในบันทึกประจำรุ่นย่อยสำหรับ 1.3.x ด้านล่าง
  • collection-ktx ได้รับการผสานรวมกับอาร์ติแฟกต์คอลเล็กชันหลักแล้วพร้อมกับการย้ายข้อมูล Kotlin คุณสามารถเลิกใช้การอ้างอิงใน collection:collection-ktx เพื่อใช้ collection:collection ได้อย่างปลอดภัย เนื่องจากตอนนี้ collection-ktx ว่างเปล่าแล้ว

เวอร์ชัน 1.3.0-rc01

6 กันยายน 2023

androidx.collection:collection-*:1.3.0-rc01 จะเผยแพร่โดยไม่มีการเปลี่ยนแปลง เวอร์ชัน 1.3.0-rc01 มีคอมมิตเหล่านี้

เวอร์ชัน 1.3.0-beta01

9 สิงหาคม 2023

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.3.0-beta01 เวอร์ชัน 1.3.0-beta01 มีคอมมิตเหล่านี้

เวอร์ชัน 1.3.0-alpha04

24 มีนาคม 2023

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.3.0-alpha04

การแก้ไขข้อบกพร่อง

  • นำข้อจำกัดของทรัพยากร Dependency ออกจากอาร์ติแฟกต์ Maven เพื่อแก้ปัญหาการบิลด์ในเป้าหมาย Kotlin Native (b/274786186, KT-57531)

เวอร์ชัน 1.3.0-alpha03

22 มีนาคม 2023

ระบบจะถอนการอ้างสิทธิ์androidx.collection:collection-*:1.3.0-alpha03 เวอร์ชัน 1.3.0-alpha03 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้คุณใช้คอลเล็กชันในโปรเจ็กต์ KMM ได้แล้ว โปรดทราบว่าเป้าหมายที่ไม่ใช่ Android ของคอลเล็กชันยังคงเป็นเวอร์ชันทดลอง แต่เราตัดสินใจที่จะผสานรวมเวอร์ชันต่างๆ เพื่อให้นักพัฒนาแอปทดลองใช้ได้ง่ายขึ้น

การเปลี่ยนแปลง API

  • ArraySet ตอนนี้ใช้ MutableCollections แทน AbstractMutableCollection เพื่อให้ใช้ toArray (I1ac32) ได้อย่างมีประสิทธิภาพมากขึ้น

การแก้ไขข้อบกพร่อง

  • ArraySet.toArray พร้อมให้บริการใน JVM เท่านั้นในตอนนี้ เนื่องจากมีไว้เพื่อความเข้ากันได้กับ Java เสมอ โดยทั่วไปแล้ว ผู้ใช้ Kotlin ควรใช้ตัวช่วย .toTypedArray ของ stdlib แทน ซึ่งมีฟังก์ชันการทำงานที่เหมือนกันทุกประการพร้อมความปลอดภัยของประเภทที่เพิ่มขึ้น (I2c59b)

เวอร์ชัน 1.3.0-alpha02

27 กรกฎาคม 2022

androidx.collection:collection:1.3.0-alpha02 และ androidx.collection:collection-ktx:1.3.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • SparseArrayCompat พร้อมใช้งานในแพลตฟอร์มที่ไม่ใช่ JVM จากอาร์ติแฟกต์ทั่วไป (Ic9bd0, b/219589118, b/228347315) แล้ว
  • CircularIntArray พร้อมใช้งานในแพลตฟอร์มที่ไม่ใช่ JVM จากอาร์ติแฟกต์ทั่วไปแล้ว (I3d8ef, b/228344943)
  • LongSparseArray พร้อมใช้งานในแพลตฟอร์มที่ไม่ใช่ JVM จากอาร์ติแฟกต์ทั่วไปแล้ว (I73149, b/228347315)

เวอร์ชัน 1.3.0-alpha01

29 มิถุนายน 2022

androidx.collection:collection:1.3.0-alpha01 และ androidx.collection:collection-ktx:1.3.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha01 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • collection-ktx ได้รับการย้ายข้อมูลไปยังอาร์ติแฟกต์คอลเล็กชันหลัก androidx.collection:collection แล้ว การเปลี่ยนแปลงนี้ทำให้ผู้ใช้ Kotlin เข้าถึงส่วนขยาย -ktx ที่มีอยู่ก่อนแล้วได้โดยไม่ต้องมีทรัพยากร Dependency ของ -ktx ในขณะที่ยังคงรักษาความเข้ากันได้สำหรับผู้ใช้เดิม การดูแลส่วนขยายเหล่านี้ในอาร์ติแฟกต์ -ktx แยกต่างหากไม่มีประโยชน์อีกต่อไปเนื่องจากอาร์ติแฟกต์หลักย้ายไปใช้ Kotlin แล้ว (I6eef2)

การเปลี่ยนแปลง API

  • ArraySet ขยาย AbstractMutableCollection และไม่ได้ใช้ Collection Interface โดยตรงอีกต่อไป (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)
  • รวมตัวสร้างที่โอเวอร์โหลดสำหรับ SparseArrayCompat เป็นอาร์กิวเมนต์ที่ไม่บังคับสำหรับผู้ใช้ Kotlin (If8407, b/227474719)
  • นำไวยากรณ์ตัวดำเนินการสำหรับ SparseArrayCompat.get(key, defaultValue). ออก โปรดทราบว่าไวยากรณ์ตัวดำเนินการสำหรับ .get(key) ยังคงใช้ได้ แต่จะปรับพื้นผิว API ของ SparseArrayCompat ให้สอดคล้องกับคลาสอื่นๆ ในไลบรารีนี้ได้ดียิ่งขึ้น (I9a38d)
  • ย้ายข้อมูลส่วนขยาย LongSparseArray ไปยังอาร์ติแฟกต์หลัก androidx.collection:collection การเปลี่ยนแปลงนี้ทำให้ผู้ใช้ Kotlin เข้าถึงส่วนขยาย -ktx ที่มีอยู่ก่อนแล้วได้โดยไม่ต้องมีทรัพยากร Dependency ของ -ktx ในขณะที่ยังคงรักษาความเข้ากันได้สำหรับผู้ใช้เดิม การดูแลส่วนขยายเหล่านี้ในอาร์ติแฟกต์ -ktx แยกต่างหากไม่มีประโยชน์อีกต่อไปเนื่องจากอาร์ติแฟกต์หลักย้ายไปใช้ Kotlin แล้ว (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)
  • แปลง CircularArray เป็น Kotlin การเปลี่ยนแปลงที่สำคัญ

    • แก้ไขค่า Null ของ Generics ให้เป็นค่าที่ไม่ใช่ Null ซึ่งก่อนหน้านี้ ประกาศไม่ได้ แต่มีการบังคับใช้ใน API สาธารณะทั้งหมด
    • ก่อนหน้านี้คุณสามารถเข้าถึงเมธอดบางอย่างเป็นทั้งพร็อพเพอร์ตี้หรือฟังก์ชันได้เนื่องจาก Kotlin มีการทำงานร่วมกันกับ Java อย่างไรก็ตาม เพื่อลด การทำซ้ำในขณะที่ยังคงความเข้ากันได้ของไบนารี เราจำเป็น ต้องนำสิ่งเหล่านี้ออก ซึ่งเป็นการเปลี่ยนแปลงที่ไม่เข้ากันได้กับแหล่งที่มา การเรียกที่ได้รับผลกระทบ ได้แก่ .isEmpty, .getLast() และ .getFirst() (Ifffac)
  • แปลง CircularIntArray เป็น Kotlin เนื่องจากความสามารถในการทำงานร่วมกันของ Kotlin กับ Java ก่อนหน้านี้จึงสามารถเข้าถึงเมธอดบางอย่างได้ทั้งในรูปแบบพร็อพเพอร์ตี้หรือฟังก์ชัน อย่างไรก็ตาม เพื่อลดการทำซ้ำในขณะที่ยังคงความเข้ากันได้แบบไบนารี เราจึงจำเป็นต้องนำสิ่งเหล่านี้ออก ซึ่งเป็นการเปลี่ยนแปลงที่ไม่เข้ากันกับแหล่งที่มา การโทรที่ได้รับผลกระทบ ได้แก่ .isEmpty, .getLast() และ .getFirst() (Ie36ce)

  • แปลง LruCache เป็น Kotlin (Ia2f19)

  • แปลง SparseArrayCompat เป็น Kotlin (If6fe8)

    เราได้เพิ่มการเปลี่ยนแปลงลักษณะการทำงานเล็กน้อยใน SparseArrayCompat.valueAt() ซึ่งจะไม่แสดงผล null อย่างไม่ถูกต้องอีกต่อไปสำหรับการเรียกที่ไม่ได้เริ่มต้นซึ่งอยู่นอกขอบเขตของ size() แต่ภายในความจุเริ่มต้นที่ระบุ

    การเปลี่ยนแปลงนี้ยังทำให้ประเภทบางอย่างมีค่า 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

1 ธันวาคม 2021

androidx.collection:collection:1.2.0 และ androidx.collection:collection-ktx:1.2.0 เปิดตัวแล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.1.0

  • เพิ่มตัวสร้างอาร์เรย์ไปยัง ArraySet (Id7f19)
  • ทำให้ entrySet() เป็นไปตามข้อกำหนดของ API โดยการติดตั้งใช้งาน entrySet().toArray(), remove(), removeAll() และ retainAll() รวมถึงนำการติดตั้งใช้งาน entrySet().addAll() (I5d505) ออก

เวอร์ชัน 1.2.0-rc01

17 พฤศจิกายน 2021

androidx.collection:collection:1.2.0-rc01 และ androidx.collection:collection-ktx:1.2.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ไม่มีการเปลี่ยนแปลงจากเวอร์ชันเบต้าก่อนหน้า

เวอร์ชัน 1.2.0-beta01

13 ตุลาคม 2021

androidx.collection:collection:1.2.0-beta01 และ androidx.collection:collection-ktx:1.2.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta01 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ทำให้ entrySet() เป็นไปตามข้อกำหนดของ API โดยการติดตั้งใช้งาน entrySet().toArray(), remove(), removeAll() และ retainAll() รวมถึงนำการติดตั้งใช้งาน entrySet().addAll() (I5d505) ออก

เวอร์ชัน 1.2.0-alpha01

16 ธันวาคม 2020

androidx.collection:collection:1.2.0-alpha01 และ androidx.collection:collection-ktx:1.2.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha01 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • เพิ่มตัวสร้างอาร์เรย์ไปยัง ArraySet (Id7f19)

เวอร์ชัน 1.1.0

เวอร์ชัน 1.1.0

5 มิถุนายน 2019

androidx.collection:collection:1.1.0 และ androidx.collection:collection-ktx:1.1.0 เปิดตัวแล้ว ดูคอมมิตที่รวม 1.1.0 ได้ที่นี่

ต่อไปนี้คือสรุปการเปลี่ยนแปลงจากเวอร์ชัน 1.0.0 เป็น 1.1.0

ฟีเจอร์ใหม่

  • ใช้การติดตั้งใช้งานที่มีประสิทธิภาพมากขึ้นสำหรับฟังก์ชัน contains และ isNotEmpty ในอาร์ติแฟกต์ "collection-ktx" (aosp/866529)

การเปลี่ยนแปลง API

  • เพิ่ม putIfAbsent ใน LongSparseArray, SimpleArrayMap และ SparseArrayCompat (aosp/772608)
  • เพิ่ม getOrDefault ลงใน SimpleArrayMap (aosp/772607)
  • เพิ่ม remove แบบ 2 อาร์กิวเมนต์ลงใน LongSparseArray, SimpleArrayMap และ SparseArrayCompat เลิกใช้งานส่วนขยาย KTX ที่เกี่ยวข้องสำหรับฟังก์ชันนี้ (aosp/772482)
  • เพิ่ม replace ที่มี 2 อาร์กิวเมนต์ลงใน LongSparseArray, SimpleArrayMap และ SparseArrayCompat (aosp/772483)
  • เพิ่ม replace ที่มีอาร์กิวเมนต์ 3 รายการลงใน LongSparseArray, SimpleArrayMap และ SparseArrayCompat (aosp/772484)
  • เลิกใช้deleteเมธอดที่ซ้ำซ้อน เมธอด remove มี API และฟังก์ชันการทำงานเหมือนกัน และตรงกับ API ที่ Maps ทั่วไปใช้ (aosp/866053)

แก้ไขข้อบกพร่อง

  • เปลี่ยน SimpleArrayMap เพื่อซิงค์แคชอาร์เรย์ส่วนกลางภายในใน SimpleArrayMap.class แทน ArrayMap.class ซึ่งจะช่วยให้มั่นใจได้ว่าหากคุณใช้ SimpleArrayMap เท่านั้น เครื่องมือลดขนาดโค้ดจะนำ ArrayMap ออกได้ (aosp/934557)

เวอร์ชัน 1.1.0-rc01

7 พฤษภาคม 2019

androidx.collection:collection:1.1.0-rc01 และ androidx.collection:collection-ktx:1.1.0-rc01 เปิดตัวแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • ใช้การติดตั้งใช้งานที่มีประสิทธิภาพมากขึ้นสำหรับฟังก์ชัน contains และ isNotEmpty ในอาร์ติแฟกต์ "collection-ktx" (aosp/866529)

เวอร์ชัน 1.1.0-beta01

3 เมษายน 2019

androidx.collection:collection:1.1.0-beta01 และ androidx.collection:collection-ktx:1.1.0-beta01 เปิดตัวแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

การเปลี่ยนแปลง API

  • เราได้นำเมธอดที่กล่าวถึงในหมายเหตุประจำรุ่นอัลฟ่า 03 ซึ่งมีการเปลี่ยนแปลงค่า @RestrictTo ออกแล้ว โดยไม่มีไลบรารี AndroidX ใดๆ ใช้งาน (ทั้งในปัจจุบันและในอดีต) และไม่มีฟังก์ชันการทำงานใดๆ ที่ขาดหายไปจาก API สาธารณะ

แก้ไขข้อบกพร่อง

  • เปลี่ยน SimpleArrayMap เพื่อซิงค์แคชอาร์เรย์ส่วนกลางภายในใน SimpleArrayMap.class แทน ArrayMap.class ซึ่งจะช่วยให้มั่นใจได้ว่าหากคุณใช้ SimpleArrayMap เท่านั้น เครื่องมือลดขนาดโค้ดจะนำ ArrayMap ออกได้ (aosp/934557)

เวอร์ชัน 1.1.0-alpha03

13 มีนาคม 2019

androidx.collection:collection:1.0.0-alpha03 และ androidx.collection:collection-ktx:1.0.0-alpha03 เปิดตัวแล้ว ดูรายการคอมมิตทั้งหมดที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

การเปลี่ยนแปลง API

  • มีการเปลี่ยนวิธีการใน ArraySet ที่ก่อนหน้านี้ทำเครื่องหมายเป็น @RestrictTo(LIBRARY_GROUP) เป็น @RestrictTo(LIBRARY_GROUP_PREFIX) เพื่อรองรับการใช้งานในอดีต โดยไลบรารี AndroidX อื่นๆ ซึ่งตอนนี้อยู่ในรหัสกลุ่ม Maven ที่แตกต่างกัน เราจะเผยแพร่หรือนำ เมธอดนี้ออกในเวอร์ชัน 1.1.0-alpha04 เนื่องจากไลบรารี AndroidX อื่นๆ ไม่ควรได้รับ API พิเศษที่นักพัฒนาแอปรายอื่นๆ ไม่ได้รับ

เวอร์ชัน 1.1.0-alpha02

30 มกราคม 2019

androidx.collection:collection 1.1.0-alpha02 และ androidx.collection:collection-ktx 1.1.0-alpha02 เปิดตัวแล้ว

การเปลี่ยนแปลง API

  • เลิกใช้deleteเมธอดที่ซ้ำซ้อน เมธอด remove มี API และฟังก์ชันการทำงานเหมือนกัน และตรงกับ API ที่ Maps ทั่วไปใช้ (aosp/866053)

เวอร์ชัน 1.1.0-alpha01

3 ธันวาคม 2018

การเปลี่ยนแปลง API

  • เพิ่ม putIfAbsent ใน LongSparseArray, SimpleArrayMap และ SparseArrayCompat (aosp/772608)
  • เพิ่ม getOrDefault ลงใน SimpleArrayMap (aosp/772607)
  • เพิ่ม remove แบบ 2 อาร์กิวเมนต์ลงใน LongSparseArray, SimpleArrayMap และ SparseArrayCompat เลิกใช้งานส่วนขยาย KTX ที่เกี่ยวข้องสำหรับฟังก์ชันนี้ (aosp/772482)
  • เพิ่ม replace ที่มี 2 อาร์กิวเมนต์ลงใน LongSparseArray, SimpleArrayMap และ SparseArrayCompat (aosp/772483)
  • เพิ่ม replace ที่มีอาร์กิวเมนต์ 3 รายการลงใน LongSparseArray, SimpleArrayMap และ SparseArrayCompat (aosp/772484)