คอลเล็กชัน
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 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
- เพิ่มการรองรับเป้าหมาย
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 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- นำเครื่องหมายหลุมศพที่ลบออกจากแผนที่/ชุดเมื่อปรับขนาด (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 withMutableSet& Set-like APIMutableObjectListและ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 withMutableSet& Set-like APIMutableObjectListและ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)
- 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)