คอลเล็กชัน
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
---|---|---|---|---|
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 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)