การสร้างความสัมพันธ์และการทำให้แบน
associate และ flatMap
การสร้างความสัมพันธ์และการทำให้แบน เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกรองและการแมป
- การจัดกลุ่มและการแบ่งส่วน
- การรวมค่า
- การสร้างความสัมพันธ์และการทำให้แบน