map, filter, forEach
แปลงคอลเลกชันด้วยแลมบ์ดา
map, filter, forEach เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
การดำเนินการกับคอลเลกชัน
คอลเลกชันของ Kotlin มีการดำเนินการในตัวที่ทรงพลัง การดำเนินการสามอย่างที่คุณจะใช้บ่อยมากคือ map, filter และ forEach
การดำเนินการเหล่านี้ช่วยให้คุณแปลง เลือก และวนดูข้อมูลได้ในบรรทัดเดียวที่อ่านเข้าใจง่าย แทนการเขียนลูปด้วยตนเอง
map แปลงสมาชิกแต่ละรายการ
map สร้างรายการใหม่โดยใช้การแปลงกับสมาชิกทุกตัว
ภายในแลมบ์ดา it หมายถึงสมาชิกปัจจุบัน รายการเดิมจะไม่เปลี่ยนแปลง
fun main() {
val nums = listOf(1, 2, 3)
val doubled = nums.map { it * 2 }
println(doubled)
}map เปลี่ยนชนิดข้อมูลได้
ผลลัพธ์ของ map ไม่จำเป็นต้องมีชนิดเดียวกับข้อมูลนำเข้า
ในตัวอย่างนี้ เราเปลี่ยนรายการชื่อให้เป็นรายการความยาวของชื่อ
fun main() {
val names = listOf("Ada", "Linus")
val lengths = names.map { it.length }
println(lengths)
}filter เก็บเฉพาะรายการที่ตรงเงื่อนไข
filter ส่งคืนรายการใหม่ที่มีเฉพาะสมาชิกซึ่งแลมบ์ดาส่งค่า true กลับมา
ในตัวอย่างนี้ เราเก็บไว้เฉพาะจำนวนคู่
fun main() {
val nums = listOf(1, 2, 3, 4, 5, 6)
val evens = nums.filter { it % 2 == 0 }
println(evens)
}filter กับข้อความ
เงื่อนไขสามารถเป็นอะไรก็ได้ที่ส่งคืนค่าบูลีน ในตัวอย่างนี้ เราเก็บไว้เฉพาะคำที่ยาว
สมาชิกที่ไม่ผ่านการทดสอบจะถูกตัดออกจากผลลัพธ์โดยอัตโนมัติ
fun main() {
val words = listOf("hi", "hello", "hey", "howdy")
val long = words.filter { it.length > 3 }
println(long)
}forEach เรียกใช้การทำงาน
forEach เรียกใช้บล็อกโค้ดกับสมาชิกทุกตัว แต่จะไม่สร้างรายการใหม่
ใช้สำหรับผลข้างเคียง เช่น การพิมพ์หรือการบันทึกข้อมูล
fun main() {
val fruits = listOf("apple", "banana")
fruits.forEach { println("Fruit: $it") }
}map กับ forEach
map ส่งคืนรายการที่ผ่านการแปลงแล้ว จึงควรใช้เมื่อคุณต้องการผลลัพธ์
forEach ไม่ส่งคืนผลลัพธ์ที่นำไปใช้ได้ จึงควรใช้เฉพาะกับการทำงาน การเลือกใช้สิ่งที่เหมาะสมช่วยให้โค้ดอ่านง่าย
การเชื่อมต่อการดำเนินการ
การดำเนินการเหล่านี้ส่งคืนคอลเลกชัน คุณจึงเชื่อมต่อเข้าด้วยกันได้
ให้อ่านจากซ้ายไปขวา: เริ่มจาก filter แล้วใช้ map กับรายการที่เหลือ
fun main() {
val nums = listOf(1, 2, 3, 4, 5, 6)
val result = nums.filter { it % 2 == 0 }.map { it * 10 }
println(result)
}การตั้งชื่อพารามิเตอร์
แทนที่จะใช้ it คุณสามารถตั้งชื่อพารามิเตอร์ของแลมบ์ดาเพื่อให้อ่านเข้าใจง่าย โดยเฉพาะเมื่อเชื่อมต่อการดำเนินการหลายอย่าง
ใช้ลูกศรดังนี้: { name -> ... }
fun main() {
val prices = listOf(10, 25, 5)
val withTax = prices.map { price -> price + price / 10 }
println(withTax)
}forEachIndexed
เมื่อต้องการตำแหน่งของสมาชิกด้วย ให้ใช้ forEachIndexed ซึ่งจะส่งทั้งดัชนีและสมาชิกมาให้
วิธีนี้ช่วยให้ไม่ต้องติดตามตัวนับด้วยตนเอง
fun main() {
val tasks = listOf("eat", "code", "rest")
tasks.forEachIndexed { i, task ->
println("$i: $task")
}
}การรวมการดำเนินการเพื่อใช้งานจริง
เมื่อนำการดำเนินการเหล่านี้มารวมกัน จะช่วยแสดงขั้นตอนการประมวลผลข้อมูลได้อย่างง่ายดาย ในตัวอย่างนี้ เราหารวมความยาวของชื่อที่ยาว
โค้ดนี้อ่านแล้วแทบเหมือนประโยคภาษาธรรมดา
fun main() {
val names = listOf("Ada", "Grace", "Bo")
val total = names.filter { it.length > 2 }.map { it.length }.sum()
println(total)
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับการดำเนินการกับคอลเลกชัน
สรุปทบทวน
map แปลงสมาชิกแต่ละตัวเป็นรายการใหม่ filter เก็บสมาชิกที่ตรงกับเงื่อนไข และ forEach เรียกใช้การทำงานกับสมาชิกแต่ละตัว
การดำเนินการเหล่านี้ส่งคืนคอลเลกชัน จึงสามารถเชื่อมต่อกันเพื่อสร้างขั้นตอนการประมวลผลข้อมูลที่อ่านง่าย
คำถามที่พบบ่อย
บทเรียน “map, filter, forEach” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “map, filter, forEach” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “map, filter, forEach”
แปลงคอลเลกชันด้วยแลมบ์ดา คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “map, filter, forEach” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม
ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- รายการและรายการที่เปลี่ยนแปลงได้
- แมปและเซต
- map, filter, forEach
- แลมบ์ดาและฟังก์ชันระดับสูง