คอลเล็กชัน
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
13 พฤศจิกายน 2024 | 1.4.5 | - | - | 1.5.0-alpha06 |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ลงในคอลเล็กชัน คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
Groovy
dependencies { def collection_version = "1.4.5" implementation "androidx.collection:collection:$collection_version" }
Kotlin
dependencies { val collection_version = "1.4.5" implementation("androidx.collection:collection:$collection_version") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมในเอกสารประกอบของเครื่องมือติดตามปัญหา
รุ่น 1.5
เวอร์ชัน 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
แบบใหม่ที่ไม่ต้องมีการจัดสรร ซึ่งมีลักษณะอัตรา Hit ที่ดียิ่งขึ้น (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()
ในคอลเล็กชันตระกูล "Scatter" เวอร์ชันใหม่จะล้างเครื่องหมายที่ลบไปแล้วครั้งละ 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
เราได้เพิ่มคอลเล็กชันใหม่ที่มีประสิทธิภาพสูงสำหรับจัดเก็บข้อมูลพื้นฐานโดยไม่ต้องใช้การบรรจุข้อมูล ดังนี้
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()
ตอนนี้ตัวดำเนินการวนจะแสดงผลอินสแตนซ์ใหม่ (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
- คลาสที่มีMutableSet
และ API คล้ายกับชุดMutableObjectList
และObjectList
- คลาสที่มีMutableList
และ API คล้ายรายการ
เราได้เพิ่มคอลเล็กชันใหม่ที่มีประสิทธิภาพสูงสำหรับจัดเก็บข้อมูลพื้นฐานโดยไม่ต้องใช้การบรรจุข้อมูล ดังนี้
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 จำนวนมากมีประเภทที่ถูกต้องสำหรับค่าว่าง และสมาชิกแบบส่วนตัวของแพ็กเกจบางรายการเปลี่ยนเป็น
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 ที่มีอยู่ได้โดยไม่ต้องใช้การพึ่งพา -ktx ในขณะเดียวกันก็ยังคงความเข้ากันได้สำหรับผู้ใช้ปัจจุบัน การดูแลรักษาส่วนขยายเหล่านี้ในอาร์ติแฟกต์ -ktx แยกต่างหากไม่มีประโยชน์อีกต่อไปเนื่องจากอาร์ติแฟกต์หลักได้ย้ายไปยัง Kotlin แล้ว (I6eef2)
การเปลี่ยนแปลง API
- ตอนนี้
ArraySet
ขยายAbstractMutableCollection
และไม่ใช้อินเทอร์เฟซคอลเล็กชันโดยตรงอีกต่อไป (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()
- useset.toTypedArray()
set.toArray(array)
- useset.forEachIndexed(array::set)
- การเรียกใช้ต่อไปนี้มีประเภทอาร์กิวเมนต์เป็น
- รวมตัวสร้างแบบโอเวอร์โหลดสำหรับ
SparseArrayCompat
ไว้เป็นอาร์กิวเมนต์ที่ไม่บังคับสำหรับผู้ใช้ Kotlin (If8407, b/227474719) - นำไวยากรณ์โอเปอเรเตอร์สำหรับ
SparseArrayCompat.get(key, defaultValue).
ออก โปรดทราบว่าการดำเนินการนี้ยังคงอนุญาตให้ใช้ไวยากรณ์โอเปอเรเตอร์สำหรับ.get(key)
แต่ช่วยให้อินเทอร์เฟซ API ของSparseArrayCompat
สอดคล้องกับคลาสอื่นๆ ในไลบรารีนี้มากขึ้น (I9a38d) - ย้ายข้อมูลส่วนขยาย
LongSparseArray
ไปยังอาร์ติแฟกต์หลัก androidx.collection:collection การเปลี่ยนแปลงนี้ทำให้ผู้ใช้ Kotlin เข้าถึงส่วนขยาย -ktx ที่มีอยู่ได้โดยไม่ต้องใช้การพึ่งพา -ktx ในขณะเดียวกันก็ยังคงความเข้ากันได้สำหรับผู้ใช้ปัจจุบัน การดูแลรักษาส่วนขยายเหล่านี้ในอาร์ติแฟกต์ -ktx แยกต่างหากไม่มีประโยชน์อีกต่อไปเนื่องจากอาร์ติแฟกต์หลักได้ย้ายไปยัง Kotlin แล้ว (I8659a) - แปลง
LongSparseArray
เป็น Kotlin การเปลี่ยนแปลงนี้เพิ่มค่า Null อย่างชัดเจนในประเภทต่างๆ ซึ่งถือเป็นการเปลี่ยนแปลงที่เข้ากันได้แบบไบนารี แต่อาจทําให้แหล่งที่มาเข้ากันไม่ได้ โดยเฉพาะอย่างยิ่ง *.isEmpty
ไม่สามารถเข้าถึงเป็นพร็อพเพอร์ตี้ได้อีกต่อไป จะต้องเข้าถึงเป็นการเรียกใช้ฟังก์ชันใน Kotlin -.isEmpty()
(Idfd0f) - แปลง
SimpleArrayMap
เป็น Kotlin การเปลี่ยนแปลงนี้ทำให้เกิดการเปลี่ยนแปลงที่ไม่เข้ากันได้ 2-3 รายการ ซึ่งเป็นผลมาจากการทำงานร่วมกันของ Java กับ Kotlin และความสามารถในการกำหนดค่า Null ของประเภทในแหล่งที่มาอย่างถูกต้อง- API ระดับแพ็กเกจที่เข้าถึงได้เฉพาะภายใน
.mSize
,.mArray
,.mHashes
,.indexOf()
,.indexOfNull()
และ.indexOfValue()
เปลี่ยนเป็นระดับแพ็กเกจที่เข้าถึงได้เฉพาะภายในแล้ว ซึ่งในทางเทคนิคแล้วเป็นการเปลี่ยนแปลงที่ไม่เข้ากันได้กับไบนารี แต่แสดงถึงระดับการเข้าถึงที่ตั้งใจไว้ของฟิลด์เหล่านี้ และเป็นระดับที่ใกล้เคียงที่สุดที่เราทำได้ใน Kotlin เนื่องจากไม่มีวิธีระบุระดับการเข้าถึงระดับแพ็กเกจที่เข้าถึงได้เฉพาะภายใน - ตอนนี้เราได้กำหนดค่าว่างของบางประเภทอย่างถูกต้องแล้ว โดยเมธอดที่ได้รับผลกระทบ ได้แก่
.getOrDefault
,.keyAt
,.valueAt
,.setValueAt
,.put
,.putIfAbsent
,.removeAt
,.replace
- สำหรับผู้ใช้ Kotlin ตอนนี้
.isEmpty()
จะใช้งานได้เฉพาะเป็นฟังก์ชันเท่านั้น แทนที่จะเข้าถึงผ่านพร็อพเพอร์ตี้ได้ด้วย (I271b7, b/182813986)
- API ระดับแพ็กเกจที่เข้าถึงได้เฉพาะภายใน
แปลง
CircularArray
เป็น Kotlin การเปลี่ยนแปลงที่สำคัญ- แก้ไขค่า Null ของแบบทั่วไปให้ไม่ใช่ Null ซึ่งก่อนหน้านี้ไม่สามารถประกาศได้ แต่บังคับใช้ใน API สาธารณะทั้งหมด
- ก่อนหน้านี้ ความสามารถในการทำงานร่วมกันของ Java ใน Kotlin ทำให้เข้าถึงเมธอดบางอย่างได้ทั้งในฐานะพร็อพเพอร์ตี้หรือฟังก์ชัน อย่างไรก็ตาม เราต้องนํารายการเหล่านี้ออกเพื่อลดความซ้ำซ้อนและคงความเข้ากันได้ของไบนารีไว้ ซึ่งเป็นการเปลี่ยนแปลงที่ไม่เข้ากันได้กับซอร์สโค้ด การเรียกใช้ที่ได้รับผลกระทบคือ
.isEmpty
,.getLast()
และ.getFirst()
(Ifffac)
แปลง
CircularIntArray
เป็น Kotlin ก่อนหน้านี้ ความสามารถในการทำงานร่วมกันของ Java ใน Kotlin ทำให้เข้าถึงเมธอดบางอย่างได้ทั้งในฐานะพร็อพเพอร์ตี้หรือฟังก์ชัน อย่างไรก็ตาม เราต้องนำรายการเหล่านี้ออกเพื่อลดความซ้ำซ้อนและคงความเข้ากันได้ของไบนารีไว้ ซึ่งเป็นการเปลี่ยนแปลงที่ไม่เข้ากันได้กับแหล่งที่มา สายที่ได้รับผลกระทบคือ.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 อ argum ไปยังLongSparseArray
,SimpleArrayMap
และSparseArrayCompat
เลิกใช้งานส่วนขยาย KTX ที่เกี่ยวข้องสำหรับฟังก์ชันการทำงานนี้ (aosp/772482) - เพิ่ม
replace
แบบ 2 อ argum ไปยัง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
- เราได้นําวิธีการที่กล่าวถึงในหมายเหตุการเผยแพร่ alpha03 ว่ามีค่า
@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 อ argum ไปยังLongSparseArray
,SimpleArrayMap
และSparseArrayCompat
เลิกใช้งานส่วนขยาย KTX ที่เกี่ยวข้องสำหรับฟังก์ชันการทำงานนี้ (aosp/772482) - เพิ่ม
replace
แบบ 2 อ argum ไปยังLongSparseArray
,SimpleArrayMap
และSparseArrayCompat
(aosp/772483) - เพิ่ม
replace
ที่มีอาร์กิวเมนต์ 3 รายการลงในLongSparseArray
,SimpleArrayMap
และSparseArrayCompat
(aosp/772484)