Kotlin Academy · บทเรียน

การจัดกลุ่มและการแบ่งส่วน

จัดระเบียบข้อมูล

บทเรียน 2 จาก 413 ขั้นตอน

การจัดกลุ่มและการแบ่งส่วน เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน

การจัดระเบียบข้อมูล

บางครั้งคุณจำเป็นต้องแบ่งคอลเลกชันออกเป็นหมวดหมู่ Kotlin มี groupBy สำหรับจัดองค์ประกอบลงกลุ่มตามคีย์ และมี partition สำหรับแบ่งออกเป็นสองรายการตามเงื่อนไข

ฟังก์ชัน partition

partition แบ่งคอลเลกชันออกเป็น คู่ของรายการสองรายการ ได้แก่ องค์ประกอบที่ตรงตามเงื่อนไข และองค์ประกอบที่ไม่ตรงตามเงื่อนไข

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6)
    val (even, odd) = numbers.partition { it % 2 == 0 }
    println("Even: $even")
    println("Odd: $odd")
}

การแยกค่าจากคู่

เนื่องจาก partition ส่งคืนค่าเป็น Pair คุณจึงสามารถแยกค่าออกเป็นตัวแปรที่ตั้งชื่อไว้สองตัวได้โดยตรง ดังที่แสดงไว้ด้านบน นอกจากนี้คุณยังเข้าถึง .first และ .second ได้ด้วย

fun main() {
    val result = listOf(10, -5, 3, -8).partition { it >= 0 }
    println(result.first)
    println(result.second)
}

ฟังก์ชัน groupBy

groupBy สร้าง Map ซึ่งแต่ละคีย์มาจากตัวเลือก และค่าคือรายการขององค์ประกอบที่ใช้คีย์เดียวกัน

fun main() {
    val words = listOf("apple", "banana", "avocado", "cherry")
    val byFirstLetter = words.groupBy { it.first() }
    println(byFirstLetter)
}

การจัดกลุ่มตามคีย์ที่คำนวณได้

คีย์อาจเป็นค่าใด ๆ ที่คำนวณได้ เช่น ความยาวของสตริงหรือเศษเหลือ

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6, 7)
    val byRemainder = numbers.groupBy { it % 3 }
    println(byRemainder)
}

groupBy พร้อมการแปลงค่า

groupBy รับแลมบ์ดาที่สองเพื่อแปลงค่าแต่ละค่าก่อนนำไปใส่ในกลุ่ม

fun main() {
    val words = listOf("red", "rose", "blue", "berry")
    val grouped = groupExample(words)
    println(grouped)
}

fun groupExample(words: List<String>) =
    words.groupBy({ it.first() }, { it.uppercase() })

การวนซ้ำผ่านกลุ่ม

เนื่องจาก groupBy ส่งคืนค่าเป็น Map คุณจึงสามารถวนซ้ำผ่านรายการเพื่อประมวลผลแต่ละกลุ่มได้

fun main() {
    val animals = listOf("cat", "cow", "dog", "duck")
    val groups = animals.groupBy { it.first() }
    for ((letter, list) in groups) {
        println("$letter -> $list")
    }
}

การนับด้วย groupingBy

หากต้องการนับแยกตามคีย์ การใช้ groupingBy ตามด้วย eachCount จะมีประสิทธิภาพและอ่านเข้าใจได้ชัดเจน

fun main() {
    val letters = listOf("a", "b", "a", "c", "b", "a")
    val counts = letters.groupingBy { it }.eachCount()
    println(counts)
}

partition เทียบกับ filter

เมื่อคุณต้องการเฉพาะองค์ประกอบที่ตรงตามเงื่อนไข ให้ใช้ filter แต่เมื่อคุณต้องการทั้งองค์ประกอบที่ตรงและไม่ตรงตามเงื่อนไข partition จะดำเนินการให้ในรอบเดียวและส่งคืนรายการทั้งสองรายการ

fun main() {
    val ages = listOf(15, 22, 17, 30, 12)
    val (adults, minors) = ages.partition { it >= 18 }
    println("Adults: $adults, Minors: $minors")
}

การเลือกใช้ groupBy หรือ partition

ใช้ partition เมื่อต้องการแบ่งเป็นสองกลุ่มพอดีตามเงื่อนไขแบบใช่หรือไม่ใช่ ใช้ groupBy เมื่ออาจมีหลายกลุ่มที่จัดตามคุณสมบัติบางอย่าง

การจัดกลุ่มในทางปฏิบัติ

การจัดกลุ่มและการแบ่งส่วนช่วยแทนที่ลูปที่เขียนเองอย่างยืดยาวด้วยแมปและรายการ ทั้งยังสื่อเจตนาได้ชัดเจนและลดข้อผิดพลาดจากการจัดการข้อมูลประกอบ

ตรวจสอบความเข้าใจ

partition ส่งคืนค่าอะไร

สรุปทบทวน

คุณได้เรียนรู้การใช้ partition เพื่อแบ่งออกเป็นสองรายการตามเงื่อนไข และใช้ groupBy เพื่อจัดองค์ประกอบลงในแมปตามคีย์ รวมถึงใช้ groupingBy().eachCount() สำหรับการนับ ต่อไปคุณจะได้ลดคอลเลกชันให้เหลือค่าเดียวด้วยการรวมค่า

เริ่มต้นได้ฟรี

เรียนรู้ Kotlin ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
51
บทเรียน
203

คำถามที่พบบ่อย

บทเรียน “การจัดกลุ่มและการแบ่งส่วน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจัดกลุ่มและการแบ่งส่วน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจัดกลุ่มและการแบ่งส่วน”

จัดระเบียบข้อมูล คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การจัดกลุ่มและการแบ่งส่วน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม

ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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