คอลเล็กชัน
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 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
- เพิ่มการรองรับเป้าหมาย
watchosDeviceArm64KMP และ 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 withMutableMap& Map-like APIMutableScatterSetและScatterSet- คลาสที่มีMutableSetและ API ที่คล้ายกับชุดMutableObjectListและObjectList- คลาสที่มีMutableListและ API ที่คล้ายรายการ
เพิ่มคอลเล็กชันใหม่ที่มีประสิทธิภาพสูงสำหรับการจัดเก็บประเภทข้อมูลพื้นฐานโดยไม่ต้อง Boxing แล้ว
Mutable[Int|Float|Long]List- คลาสที่มี API คล้ายกับMutableList<Int|Float|Long>นอกจากนี้ ยังมี[Int|Float|Long]Listแบบอ่านอย่างเดียวด้วย เช่น จัดเก็บจำนวนเต็มในIntListMutable[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)
- เราได้เปลี่ยน API ระดับแพ็กเกจส่วนตัว
แปลง
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)