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

การกรองและการแมป

แปลงคอลเลกชัน

การกรองและการแมป เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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