คอลเล็กชัน

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

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

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

เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ 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-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 มีการเปลี่ยนแปลงเหล่านี้

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

  • นำเครื่องหมายหลุมศพที่ลบออกจากแผนที่/ชุดเมื่อปรับขนาด (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 - Classes with MutableSet & Set-like 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 - คลาสที่มี MutableMap และ API ที่คล้ายแผนที่
  • MutableScatterSet & ScatterSet - Classes with MutableSet & Set-like 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)