ในบทความนี้ เราจะมาดูกันว่าเราจะแปลง List เป็น Map ได้อย่างไรโดยใช้ตัวเลือกต่างๆ ที่ Kotlin Library มีให้
ตัวอย่าง:การใช้ Associate()
วิธีมาตรฐานที่สุดในการแปลงรายการเป็นแผนที่คือการใช้ associate() การทำงาน. ฟังก์ชันนี้รับรายการของไอเท็มเป็นอาร์กิวเมนต์ และส่งคืนแมปที่มีคู่คีย์-ค่า ในตัวอย่างต่อไปนี้ เราจะมาดูกันว่ามันทำงานอย่างไร
ตัวอย่าง
data class mySubjectList(var name: String, var priority: String) fun main() { val mySubjectList: List<mySubjectList> = listOf( mySubjectList("Java", "1"), mySubjectList("Kotlin", "2"), mySubjectList("C", "3") ) // Creating a map and adding my own list of values in it. val myMap: Map<String, String> = mySubjectList.associate { Pair(it.priority, it.name) } println(myMap) }
ผลลัพธ์
เมื่อเราเรียกใช้โค้ดข้างต้นแล้ว โค้ดจะสร้างผลลัพธ์ต่อไปนี้ ซึ่งเป็นแผนที่และเราจะได้ผลลัพธ์ในรูปแบบคีย์-ค่า
{1=Java, 2=Kotlin, 3=C}
ตัวอย่าง:การใช้ AssociateBy()
AssociateBy() เป็นอีกฟังก์ชันหนึ่งที่สามารถใช้ในการแปลงรายการเป็นแผนที่ได้ ในตัวอย่างต่อไปนี้ เราจะมาดูกันว่าเราจะใช้งานสิ่งเดียวกันได้อย่างไร
ตัวอย่าง
data class mySubjectList(var name: String, var priority: String) fun main() { val mySubjectList: List<mySubjectList> = listOf( mySubjectList("Java", "1"), mySubjectList("Kotlin", "2"), mySubjectList("C", "3") ) // Creating a map and adding my own list of the values in it val myMap: Map<String, String> = mySubjectList.associateBy( {it.priority}, {it.name} ) println(myMap) }
ผลลัพธ์
มันจะสร้างผลลัพธ์ต่อไปนี้ซึ่งเป็นแผนที่และเราจะได้ผลลัพธ์ในรูปแบบคีย์-ค่า
{1=Java, 2=Kotlin, 3=C}
ตัวอย่าง:การใช้ toMap()
ห้องสมุด Kotlin มีฟังก์ชันอื่นในการแปลงรายการเป็นแผนที่ Kotlin แผนที่ class มีฟังก์ชันที่เรียกว่า toMap() ซึ่งส่งคืนแผนที่ใหม่ที่มีคู่คีย์-ค่าทั้งหมดจากคอลเล็กชันที่กำหนด มาดูกันว่ามันทำงานอย่างไร
ตัวอย่าง
data class mySubjectList(var name: String, var priority: String) fun main() { val mySubjectList: List<mySubjectList> = listOf( mySubjectList("Java", "1"), mySubjectList("Kotlin", "2"), mySubjectList("C", "3") ) // Creating a map and adding my own list of the values in it . val myMap: Map<String, String> = mySubjectList.map{ it.priority to it.name }.toMap() println(myMap) }
ผลลัพธ์
เมื่อเราเรียกใช้โค้ดด้านบนแล้ว โค้ดจะสร้างผลลัพธ์ต่อไปนี้ซึ่งเป็นแผนที่ และเราจะได้ผลลัพธ์ในรูปแบบคีย์-ค่า
{1=Java, 2=Kotlin, 3=C}