Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีการแปลงรายการเป็นแผนที่ใน Kotlin?


ในบทความนี้ เราจะมาดูกันว่าเราจะแปลง 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}