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และเซตทำงานตามค่า- ช่วยสร้างคีย์ของแมปที่ปลอดภัยและเปรียบเทียบได้
- ทำงานร่วมกับ
filtermapและ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เซต และคีย์ของแมปทำงานได้ - ทำงานร่วมกับ
filtermapและ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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การประกาศ Data Class
- copy และ equals
- การประกาศแบบแยกโครงสร้าง
- Data Class ในคอลเลกชัน