Kotlin Academy · บทเรียน

การสร้างความสัมพันธ์และการทำให้แบน

associate และ flatMap

บทเรียน 4 จาก 413 ขั้นตอน

การสร้างความสัมพันธ์และการทำให้แบน เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน

การเชื่อมโยงและการทำให้แบนราบ

เครื่องมืออันทรงพลังสำหรับคอลเลกชันอีกสองกลุ่มคือ ฟังก์ชันตระกูล associate ที่สร้างแมปจากรายการ และ flatMap / flatten ที่เปลี่ยนคอลเลกชันซ้อนกันให้เป็นคอลเลกชันแบนราบเพียงชุดเดียว

ฟังก์ชัน associateWith

associateWith ใช้องค์ประกอบแต่ละรายการเป็นคีย์ และคำนวณค่าของคีย์นั้นด้วยแลมบ์ดา โดยสร้างเป็น Map

fun main() {
    val words = listOf("a", "bb", "ccc")
    val lengths = words.associateWith { it.length }
    println(lengths)
}

ฟังก์ชัน associateBy

associateBy ทำงานในทางตรงกันข้าม โดยคำนวณคีย์จากแต่ละองค์ประกอบ และเก็บองค์ประกอบนั้นไว้เป็นค่า

data class User(val id: Int, val name: String)

fun main() {
    val users = listOf(User(1, "Ann"), User(2, "Bob"))
    val byId = users.associateBy { it.id }
    println(byId[2]?.name)
}

ฟังก์ชัน associate

associate แบบทั่วไปช่วยให้คุณสร้างทั้งคีย์และค่าได้พร้อมกัน โดยส่งคืนค่าเป็น Pair สำหรับแต่ละองค์ประกอบ

fun main() {
    val names = listOf("Ann", "Bob", "Cy")
    val map = names.associate { it to it.length }
    println(map)
}

คีย์ซ้ำ

หากองค์ประกอบสองรายการสร้างคีย์เดียวกันในฟังก์ชัน associate รายการสุดท้ายจะมีผล ให้ใช้คีย์ที่ไม่ซ้ำกันเมื่อคุณต้องการเก็บองค์ประกอบไว้ทุกตัว

fun main() {
    val words = listOf("apple", "ant", "bee")
    val byFirst = words.associateBy { it.first() }
    println(byFirst)
}

ฟังก์ชัน flatten

flatten รับคอลเลกชันของคอลเลกชัน แล้วรวมให้เป็นรายการแบนราบเพียงรายการเดียว

fun main() {
    val nested = listOf(listOf(1, 2), listOf(3, 4), listOf(5))
    val flat = nested.flatten()
    println(flat)
}

ฟังก์ชัน flatMap

flatMap แปลงองค์ประกอบแต่ละรายการให้เป็นคอลเลกชัน แล้วทำให้คอลเลกชันเหล่านั้นทั้งหมดแบนราบรวมเป็นรายการเดียว ฟังก์ชันนี้คือการใช้ map และ flatten ในขั้นตอนเดียว

fun main() {
    val words = listOf("hi", "ok")
    val chars = words.flatMap { it.toList() }
    println(chars)
}

flatMap กับข้อมูลซ้อนกัน

flatMap เหมาะอย่างยิ่งสำหรับขยายโครงสร้างซ้อนกันให้เป็นลำดับของรายการเพียงชุดเดียว

data class Team(val members: List<String>)

fun main() {
    val teams = listOf(Team(listOf("Ann", "Bob")), Team(listOf("Cy")))
    val everyone = teams.flatMap { it.members }
    println(everyone)
}

flatMap เทียบกับการแมป

ใช้ map เมื่อแต่ละองค์ประกอบสร้างผลลัพธ์เพียงหนึ่งค่า ใช้ flatMap เมื่อแต่ละองค์ประกอบสร้างคอลเลกชัน และคุณต้องการรวมทั้งหมดเป็นรายการแบนราบเพียงรายการเดียว

fun main() {
    val numbers = listOf(1, 2, 3)
    val mapped = numbers.map { listOf(it, it * 10) }
    val flat = numbers.flatMap { listOf(it, it * 10) }
    println("map: $mapped")
    println("flatMap: $flat")
}

การรวม Associate และ FlatMap

เครื่องมือเหล่านี้มักใช้ร่วมกันในลำดับการประมวลผลข้อมูล โดยทำให้ข้อมูลซ้อนกันแบนราบก่อน แล้วจึงเชื่อมโยงเป็นแมปสำหรับค้นหาเพื่อให้เข้าถึงได้อย่างรวดเร็ว

data class Order(val items: List<String>)

fun main() {
    val orders = listOf(Order(listOf("pen", "ink")), Order(listOf("pen")))
    val counts = orders.flatMap { it.items }.groupingBy { it }.eachCount()
    println(counts)
}

เวลาที่ควรใช้แต่ละฟังก์ชัน

เลือกใช้ associateBy/associateWith เพื่อสร้างแมปสำหรับค้นหาอย่างรวดเร็วจากรายการ และใช้ flatMap/flatten เพื่อยุบคอลเลกชันซ้อนกัน เครื่องมือเหล่านี้ช่วยให้การทำงานกับข้อมูลที่มีโครงสร้างกระชับและชัดเจน

ตรวจสอบความเข้าใจ

flatMap ทำอะไร

สรุปทบทวน

คุณได้เรียนรู้การสร้างแมปด้วย associate, associateBy และ associateWith (คีย์ซ้ำจะใช้ค่าจากรายการสุดท้าย) รวมถึงการยุบโครงสร้างซ้อนกันด้วย flatten และ flatMap เครื่องมือเหล่านี้ทำให้ชุดเครื่องมือคอลเลกชันของคุณสมบูรณ์ สำหรับการแปลง การจัดระเบียบ การรวมค่า และการปรับโครงสร้างข้อมูล

เริ่มต้นได้ฟรี

เรียนรู้ Kotlin ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
51
บทเรียน
203

คำถามที่พบบ่อย

บทเรียน “การสร้างความสัมพันธ์และการทำให้แบน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสร้างความสัมพันธ์และการทำให้แบน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสร้างความสัมพันธ์และการทำให้แบน”

associate และ flatMap คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การสร้างความสัมพันธ์และการทำให้แบน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม

ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกรองและการแมป
  2. การจัดกลุ่มและการแบ่งส่วน
  3. การรวมค่า
  4. การสร้างความสัมพันธ์และการทำให้แบน
← กลับไปที่ Kotlin Academy