Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Kotlin में List को Map में कैसे कन्वर्ट करें?

परिचय

Kotlin List को Map में बदलने के कई तरीके प्रदान करता है। यह डेटा ट्रांसफॉर्मेशन के लिए आम है।

डेटा क्लास परिभाषा

data class Subject(
    val name: String,
    val priority: String
)

विधि 1: associate()

सबसे मानक तरीका - प्रत्येक तत्व से कुंजी-मान जोड़ी बनाता है।

fun main() {
    val subjects = listOf(
        Subject("Java", "1"),
        Subject("Kotlin", "2"),
        Subject("C", "3")
    )
    
    // priority को key, name को value बनाएं
    val map = subjects.associate { Pair(it.priority, it.name) }
    // या संक्षिप्त सिंटैक्स
    val map2 = subjects.associate { it.priority to it.name }
    
    println(map)   // {1=Java, 2=Kotlin, 3=C}
    println(map2)  // {1=Java, 2=Kotlin, 3=C}
}

विधि 2: associateBy()

कुंजी सेलेक्टर और वैल्यू सेलेक्टर अलग-अलग लेता है।

fun main() {
    val subjects = listOf(
        Subject("Java", "1"),
        Subject("Kotlin", "2"),
        Subject("C", "3")
    )
    
    val map = subjects.associateBy(
        { it.priority },  // keySelector
        { it.name }       // valueTransform
    )
    
    println(map)  // {1=Java, 2=Kotlin, 3=C}
}

विधि 3: toMap() के साथ map()

fun main() {
    val subjects = listOf(
        Subject("Java", "1"),
        Subject("Kotlin", "2"),
        Subject("C", "3")
    )
    
    val map = subjects.map { it.priority to it.name }.toMap()
    println(map)  // {1=Java, 2=Kotlin, 3=C}
}

डुप्लीकेट कुंजियों को संभालना

fun main() {
    val subjects = listOf(
        Subject("Java", "1"),
        Subject("Kotlin", "1"),  // डुप्लीकेट कुंजी!
        Subject("C", "3")
    )
    
    // associate/associateBy - अंतिम मान जीतता है
    val map1 = subjects.associateBy({ it.priority }, { it.name })
    println("associateBy: $map1")  // {1=Kotlin, 3=C}
    
    // associateWith - कुंजी के लिए पहला मान रखता है (कुंजियों की सूची दी गई है)
    val keys = listOf("1", "2", "3")
    val map2 = keys.associateWith { key -> 
        subjects.firstOrNull { it.priority == key }?.name ?: "नहीं मिला"
    }
    println("associateWith: $map2")  // {1=Java, 2=Kotlin, 3=C}
    
    // डुप्लीकेट्स को सूची में समूहित करने के लिए groupBy
    val grouped = subjects.groupBy { it.priority }
    println("groupBy: $grouped")  // {1=[Java, Kotlin], 3=[C]}
}

उन्नत: कस्टम मैप टाइप (LinkedHashMap, TreeMap)

fun main() {
    val subjects = listOf(Subject("Java", "1"), Subject("Kotlin", "2"))
    
    // इंसर्शन ऑर्डर बनाए रखने के लिए LinkedHashMap
    val linkedMap = subjects.associateTo(LinkedHashMap()) { it.priority to it.name }
    
    // सॉर्टेड कुंजियों के लिए TreeMap
    val treeMap = subjects.associateTo(TreeMap()) { it.priority to it.name }
    
    println("LinkedHashMap: $linkedMap")
    println("TreeMap: $treeMap")
}

प्रदर्शन तुलना

विधिपठनीयताप्रदर्शनडुप्लीकेट हैंडलिंग
associateउच्चअच्छाअंतिम जीतता है
associateByउच्चअच्छाअंतिम जीतता है
map + toMapमध्यमथोड़ा धीमा (मध्यवर्ती सूची)अंतिम जीतता है
groupByमध्यमअच्छासभी मान रखता है (List)

सिफारिश

  • associate / associateBy - अधिकांश मामलों के लिए पसंदीदा (सीधा, कुशल)
  • groupBy - जब डुप्लीकेट कुंजियों के सभी मान रखने हों
  • toMutableMap() - जब MutableMap चाहिए
  1. JavaScript में नोड लिस्ट (NodeList) को सरणी (Array) में कैसे बदलें? JavaScript में नोड लिस्ट (NodeList) को सरणी (Array) में कैसे बदलें?

    JavaScript में नोड लिस्ट को सरणी में बदलने का निम्नलिखिक कोड है:उदाहरण<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>NodeList

  1. डिक्शनरी को जावास्क्रिप्ट ऑब्जेक्ट्स की लिस्ट में कैसे बदलें? डिक्शनरी को जावास्क्रिप्ट ऑब्जेक्ट्स की लिस्ट में कैसे बदलें?

    डिक्शनरी को जावास्क्रिप्ट ऑब्जेक्ट्स की लिस्ट में बदलने का कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Document</title> <style> &n

  1. Excel टेबल को सूची में त्वरित रूप से बदलें - 3 सिद्ध तरीके Excel टेबल को सूची में त्वरित रूप से बदलें - 3 सिद्ध तरीके

    जब हम एक डेटा टेबल के साथ Excel में काम कर रहे होते हैं, तो हमें किसी कारण से Excel टेबल (पंक्ति और कॉलम शीर्षक के साथ) को एक सूची में बदलने की आवश्यकता हो सकती है। निम्नलिखित विधियां आपको क्रॉस टेबल को आसानी से और जल्दी से सूची में बदलने के लिए उचित दिशानिर्देश दे सकती हैं। प्रैक्टिस बुक डाउनलोड कर