0Pricing
Android Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. รายการและรายการที่เปลี่ยนแปลงได้
  2. แมปและเซต
  3. map, filter, forEach
  4. แลมบ์ดาและฟังก์ชันระดับสูง
← กลับไปที่ Android Academy