การกรองและการแมป
แปลงคอลเลกชัน
การกรองและการแมป เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
การแปลงคอลเลกชัน
คอลเลกชันของ Kotlin มาพร้อมชุดการดำเนินการเชิงฟังก์ชันที่หลากหลาย สองฟังก์ชันที่พบบ่อยที่สุดคือ filter ซึ่งใช้เลือกองค์ประกอบ และ map ซึ่งใช้แปลงองค์ประกอบ ทั้งสองฟังก์ชันคืนค่าคอลเลกชันใหม่และไม่เคยเปลี่ยนคอลเลกชันเดิม
ฟังก์ชัน filter
filter จะเก็บเฉพาะองค์ประกอบที่ตรงตามเงื่อนไขการคัดเลือก และคืนค่ารายการใหม่
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evens = numbers.filter { it % 2 == 0 }
println(evens)
}filterNot และ filterNotNull
filterNot จะเก็บองค์ประกอบที่ไม่ตรงกับเงื่อนไข หรือ NOT ตรงกัน ส่วน filterNotNull จะนำองค์ประกอบที่เป็นค่าว่างออกและคืนค่ารายการที่ไม่มีค่าว่าง
fun main() {
val nums = listOf(1, 2, 3, 4)
println(nums.filterNot { it > 2 })
val withNulls = listOf(1, null, 3, null)
println(withNulls.filterNotNull())
}filterIndexed
filterIndexed ให้ทั้งดัชนีและค่าในเงื่อนไขการคัดเลือก
fun main() {
val letters = listOf("a", "b", "c", "d")
val result = letters.filterIndexed { index, _ -> index % 2 == 0 }
println(result)
}ฟังก์ชัน map
map ใช้การแปลงกับทุกองค์ประกอบและคืนค่ารายการใหม่ที่ประกอบด้วยผลลัพธ์ ชนิดของผลลัพธ์อาจแตกต่างจากชนิดของค่าเข้า
fun main() {
val numbers = listOf(1, 2, 3)
val squares = numbers.map { it * it }
println(squares)
}การแปลงเป็นชนิดอื่น
map สามารถเปลี่ยนชนิดขององค์ประกอบได้ เช่น เปลี่ยนตัวเลขให้เป็นข้อความ
fun main() {
val numbers = listOf(1, 2, 3)
val labels = numbers.map { "Item $it" }
println(labels)
}mapIndexed
mapIndexed ให้ดัชนีมาพร้อมกับแต่ละองค์ประกอบ เพื่อให้คุณใช้ตำแหน่งในการแปลงค่าได้
fun main() {
val fruits = listOf("apple", "banana", "cherry")
val numbered = fruits.mapIndexed { i, fruit -> "${i + 1}. $fruit" }
numbered.forEach { println(it) }
}mapNotNull
mapNotNull จะแปลงแต่ละองค์ประกอบและตัดผลลัพธ์ที่เป็นค่าว่างออก เป็นวิธีที่เป็นระเบียบในการรวมการแปลงค่าเข้ากับการกรอง
fun main() {
val strings = listOf("1", "two", "3", "four")
val numbers = strings.mapNotNull { it.toIntOrNull() }
println(numbers)
}การเรียก filter และ map ต่อกัน
การดำเนินการเหล่านี้ประกอบเข้าด้วยกันได้อย่างเป็นธรรมชาติ รูปแบบที่พบบ่อยคือกรองก่อน แล้วจึงแปลงองค์ประกอบที่เหลือ
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
val result = numbers
.filter { it % 2 == 0 }
.map { it * 10 }
println(result)
}การดำเนินการไม่ทำลายข้อมูลเดิม
ทั้ง filter และ map คืนค่ารายการใหม่ทั้งหมด คอลเลกชันเดิมจะไม่เปลี่ยนแปลง ทำให้โค้ดปลอดภัยและทำความเข้าใจได้ง่ายขึ้น
fun main() {
val original = listOf(1, 2, 3)
val doubled = original.map { it * 2 }
println("Original: $original")
println("Doubled: $doubled")
}การกรองและการแปลงในการใช้งานจริง
เมื่อใช้ร่วมกัน filter และ map ช่วยให้คุณอธิบายกระบวนการข้อมูลแบบประกาศได้: อธิบาย WHAT ที่ต้องการ ไม่ใช่ HOW ในการวนซ้ำ วิธีนี้ชัดเจนกว่าการเขียนลูป for เองพร้อมติดตามดัชนี
แบบทดสอบสั้น ๆ
ความแตกต่างระหว่าง filter กับการแมปคืออะไร
สรุปทบทวน
คุณได้เรียนรู้การเลือกองค์ประกอบด้วย filter (และรูปแบบอื่นอย่าง filterNot, filterIndexed, filterNotNull) และการแปลงองค์ประกอบเหล่านั้นด้วย map (รวมถึง mapIndexed และ mapNotNull) ฟังก์ชันเหล่านี้นำมาต่อกันได้อย่างราบรื่นและไม่เปลี่ยนแปลงข้อมูลต้นฉบับ ต่อไปคุณจะได้จัดระเบียบข้อมูลด้วยการจัดกลุ่มและการแบ่งส่วน
คำถามที่พบบ่อย
บทเรียน “การกรองและการแมป” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกรองและการแมป” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกรองและการแมป”
แปลงคอลเลกชัน คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การกรองและการแมป” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ