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

Data Class ในคอลเลกชัน

ใช้ในแมปและเซต

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

คลาสข้อมูลกับคอลเลกชัน

เนื่องจากคลาสข้อมูลมี equals และ hashCode ที่อิงตามค่า จึงทำงานภายในคอลเลกชันได้อย่างเหมาะสม

บทเรียนนี้จะแสดงวิธีใช้คลาสข้อมูลในรายการ เซต และแมป

คลาสข้อมูลในรายการ

เก็บออบเจ็กต์ข้อมูลไว้ในรายการ แล้ววนซ้ำผ่านออบเจ็กต์เหล่านั้นเช่นเดียวกับองค์ประกอบอื่น ๆ

toString ที่อ่านง่ายช่วยให้การแสดงผลทำได้สะดวก

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("Alice", 30), User("Bob", 25))
    for (u in users) println(u)
}

contains ทำงานตามค่า

เนื่องจาก equals ใช้เปรียบเทียบค่า contains จึงค้นหาออบเจ็กต์ที่มีค่าเท่ากันได้ แม้จะเป็นคนละอินสแตนซ์

คุณไม่จำเป็นต้องใช้การอ้างอิงเดียวกันทุกประการ

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("Alice", 30))
    println(users.contains(User("Alice", 30)))
}

การลบค่าซ้ำด้วยเซต

เซตจะปฏิเสธค่าซ้ำโดยใช้ equals และ hashCode

ออบเจ็กต์ข้อมูลสองรายการที่มีค่าเหมือนกันทุกประการจะถือเป็นองค์ประกอบเดียวกัน

data class Point(val x: Int, val y: Int)

fun main() {
    val set = setOf(Point(1, 1), Point(1, 1), Point(2, 2))
    println(set.size)
}

คลาสข้อมูลเป็นคีย์ของแมป

คลาสข้อมูลเหมาะอย่างยิ่งสำหรับใช้เป็นคีย์ของแมป เพราะการค้นหาอาศัยความเท่ากันของค่า

คุณสามารถสร้างออบเจ็กต์คีย์ขึ้นมาใช้ทันที แล้วก็ยังค้นหาค่าที่จัดเก็บไว้ได้

data class Coord(val x: Int, val y: Int)

fun main() {
    val grid = mapOf(Coord(0, 0) to "start", Coord(1, 1) to "goal")
    println(grid[Coord(1, 1)])
}

คลาสข้อมูลเป็นค่าของแมป

แน่นอนว่าคลาสข้อมูลสามารถใช้เป็นค่าได้เช่นกัน โดยใช้แทนระเบียนที่มีข้อมูลครบถ้วนและมีคีย์เป็นรหัส

รูปแบบนี้พบได้บ่อยสำหรับการค้นหาข้อมูลในหน่วยความจำ

data class User(val name: String, val age: Int)

fun main() {
    val byId = mapOf(1 to User("Alice", 30))
    println(byId[1]?.name)
}

การกรองคอลเลกชัน

นำคลาสข้อมูลมาผสานกับฟังก์ชันของคอลเลกชัน เช่น filter เพื่อค้นหาข้อมูลของคุณ

แลมบ์ดาสามารถเข้าถึงพร็อพเพอร์ตีได้โดยตรง

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("A", 20), User("B", 40))
    val adults = users.filter { it.age >= 30 }
    println(adults)
}

การแปลงเป็นพร็อพเพอร์ตี

ใช้ map เพื่อแปลงคอลเลกชันของออบเจ็กต์ให้เป็นคอลเลกชันของพร็อพเพอร์ตีรายการใดรายการหนึ่ง

วิธีนี้จะแยกเอาเฉพาะข้อมูลที่คุณต้องการ

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("Alice", 30), User("Bob", 25))
    val names = users.map { it.name }
    println(names)
}

การจัดกลุ่มตามพร็อพเพอร์ตี

groupBy จะแปลงรายการให้เป็นแมปที่ใช้พร็อพเพอร์ตีที่เลือกเป็นคีย์

ในตัวอย่างนี้ ผู้ใช้จะถูกจัดกลุ่มตามเมืองของตน

data class User(val name: String, val city: String)

fun main() {
    val users = listOf(User("A", "Paris"), User("B", "Paris"), User("C", "Rome"))
    val byCity = users.groupBy { it.city }
    println(byCity["Paris"]?.size)
}

การอัปเดตรายการโดยไม่เปลี่ยนแปลงข้อมูลเดิม

หากต้องการอัปเดตรายการในรายการที่แก้ไขไม่ได้ ให้ใช้ map กับรายการนั้น แล้วใช้ copy กับองค์ประกอบที่ตรงกัน

ผลลัพธ์คือรายการใหม่ที่มีออบเจ็กต์หนึ่งรายการถูกเปลี่ยนแปลง

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("Alice", 30), User("Bob", 25))
    val updated = users.map { if (it.name == "Bob") it.copy(age = 26) else it }
    println(updated)
}

นำทุกอย่างมาประกอบกัน

คลาสข้อมูลเหมาะอย่างยิ่งสำหรับใช้เป็นองค์ประกอบของคอลเลกชัน:

  • contains และเซตทำงานตามค่า
  • ช่วยสร้างคีย์ของแมปที่ปลอดภัยและเปรียบเทียบได้
  • ทำงานร่วมกับ filter map และ groupBy ได้อย่างเป็นธรรมชาติ
  • copy ช่วยให้อัปเดตข้อมูลที่แก้ไขไม่ได้ได้
data class User(val name: String, val age: Int)

fun main() {
    val users = setOf(User("Alice", 30), User("Alice", 30))
    println(users.size)
    println(users.map { it.name })
}

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

ทดสอบความเข้าใจของคุณเกี่ยวกับคลาสข้อมูลในคอลเลกชัน

สรุปทบทวน

คุณได้เรียนรู้วิธีที่คลาสข้อมูลทำงานในคอลเลกชัน:

  • ความเท่ากันของค่าช่วยให้ contains เซต และคีย์ของแมปทำงานได้
  • ทำงานร่วมกับ filter map และ groupBy ได้
  • copy รองรับการอัปเดตข้อมูลที่แก้ไขไม่ได้

เท่านี้ก็จบหลักสูตรคลาสข้อมูลและการแยกโครงสร้างแล้ว

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

บทเรียน “Data Class ในคอลเลกชัน” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “Data Class ในคอลเลกชัน”

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

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

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

บทเรียน “Data Class ในคอลเลกชัน” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การประกาศ Data Class
  2. copy และ equals
  3. การประกาศแบบแยกโครงสร้าง
  4. Data Class ในคอลเลกชัน
← กลับไปที่ Kotlin Academy