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

listOf, setOf, mapOf: คอลเลกชันอ่านอย่างเดียว

สร้างคอลเลกชันแบบแก้ไขไม่ได้และทำความเข้าใจรูปแบบการเข้าถึง

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

สามฟังก์ชันสำหรับสร้างคอลเลกชัน

ไลบรารีมาตรฐานของ Kotlin มี listOf setOf และ mapOf สำหรับสร้างคอลเลกชันที่อ่านได้อย่างเดียว ซึ่งหมายความว่าคุณไม่สามารถเพิ่มหรือลบข้อมูลผ่านอินเทอร์เฟซได้

การสร้างรายการ

listOf สร้าง List<T> แบบอ่านได้อย่างเดียว โดยระบบอนุมานชนิดขององค์ประกอบจากอาร์กิวเมนต์

fun main() {
    val fruits = listOf("apple", "banana", "cherry")
    println(fruits)        // [apple, banana, cherry]
    println(fruits.size)   // 3
}

การสร้างเซต

setOf ส่งคืน Set<T> แบบอ่านได้อย่างเดียว และรวมองค์ประกอบที่ซ้ำกันให้เหลือเพียงหนึ่งรายการโดยอัตโนมัติ

fun main() {
    val tags = setOf("kotlin", "java", "kotlin", "android")
    println(tags) // [kotlin, java, android]
    println(tags.size) // 3
}

การสร้างแมป

mapOf รับคู่ key to value และส่งคืน Map<K, V> แบบอ่านได้อย่างเดียว

fun main() {
    val ages = mapOf("Alice" to 30, "Bob" to 25)
    println(ages["Alice"]) // 30
    println(ages.keys)     // [Alice, Bob]
}

คำอธิบายชนิด

หากชนิดที่อนุมานได้ไม่ถูกต้อง หรือรายการว่างเปล่า ให้ระบุพารามิเตอร์ชนิดอย่างชัดเจน

fun main() {
    val empty: List<String> = listOf()
    val numbers: List<Int> = listOf(1, 2, 3)
    val emptyMap: Map<String, Int> = mapOf()
    println("empty=${empty}, n=${numbers}, m=${emptyMap}")
}

รูปแบบค่าว่าง

ใช้ emptyList(), emptySet(), emptyMap() เมื่อคุณต้องการคอลเลกชันว่างอย่างชัดเจน วิธีนี้สื่อเจตนาได้ดีกว่าใช้ listOf() พร้อมพารามิเตอร์ชนิด

fun main() {
    val xs = emptyList<String>()
    val ys = emptySet<Int>()
    val zs = emptyMap<String, Int>()
    println("${xs.size}, ${ys.size}, ${zs.size}") // 0, 0, 0
}

อ่านได้อย่างเดียวก็คืออ่านได้อย่างเดียว

อินเทอร์เฟซ List ไม่มี add ดังนั้นคอมไพเลอร์จะไม่ยอมให้แก้ไขข้อมูล

fun main() {
    val items = listOf(1, 2, 3)
    // items.add(4) // ERROR: List has no add
    val bigger = items + 4 // creates new list
    println(bigger) // [1, 2, 3, 4]
}

การทำงานเบื้องหลัง

เบื้องหลังนั้น listOf จะส่งคืน ArrayList ของ Java ที่ห่อหุ้มด้วยมุมมองซึ่งแก้ไขไม่ได้ การอ่านได้อย่างเดียวเป็นข้อตกลงของอินเทอร์เฟซ ไม่ใช่การรับประกันขณะทำงานว่าจะป้องกันการเข้าถึงผ่านการสะท้อน

fun main() {
    val xs = listOf(1, 2, 3)
    println(xs::class.simpleName) // ArrayList
}

คู่ข้อมูลและ to

ฟังก์ชันอินฟิกซ์ to สร้าง Pair<A, B> ซึ่งมีประโยชน์สำหรับลิเทอรัลของแมปและทูเพิล

fun main() {
    val pair = "key" to 42
    println(pair) // (key, 42)
    val m = mapOf("a" to 1, "b" to 2)
    for ((k, v) in m) println("$k -> $v")
}

การวนซ้ำคอลเลกชันแบบอ่านได้อย่างเดียว

คอลเลกชันแบบอ่านได้อย่างเดียวรองรับรูปแบบการวนซ้ำมาตรฐานทั้งหมด ได้แก่ for, forEach, map และ filter

fun main() {
    val nums = setOf(1, 2, 3, 4)
    val doubled = nums.map { it * 2 }
    println(doubled) // [2, 4, 6, 8]
}

การต่อรายการ

ตัวดำเนินการ + สร้างรายการใหม่ที่รวมข้อมูลเข้าด้วยกัน โดยยังคงมีพฤติกรรมแบบอ่านได้อย่างเดียว

fun main() {
    val a = listOf(1, 2)
    val b = listOf(3, 4)
    val combined = a + b
    println(combined) // [1, 2, 3, 4]
}

ตรวจสอบอย่างรวดเร็ว

จะเกิดอะไรขึ้นเมื่อคุณเรียก add(4) กับรายการที่สร้างด้วย listOf(1, 2, 3)?

ทบทวน

listOf, setOf และ mapOf สร้างคอลเลกชันแบบอ่านได้อย่างเดียว โดยไม่สามารถแก้ไขผ่านอินเทอร์เฟซของคอลเลกชันได้ ใช้ + เพื่อสร้างคอลเลกชันใหม่ และใช้ emptyList()/emptySet()/emptyMap() สำหรับคอลเลกชันว่างที่ระบุชนิดแล้ว

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

บทเรียน “listOf, setOf, mapOf: คอลเลกชันอ่านอย่างเดียว” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “listOf, setOf, mapOf: คอลเลกชันอ่านอย่างเดียว”

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

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

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

บทเรียน “listOf, setOf, mapOf: คอลเลกชันอ่านอย่างเดียว” ใช้เวลานานแค่ไหน

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

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

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

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

  1. listOf, setOf, mapOf: คอลเลกชันอ่านอย่างเดียว
  2. mutableListOf, mutableMapOf: ตัวสร้างแบบเปลี่ยนแปลงได้
  3. การเข้าถึงสมาชิก: get, first, last, getOrNull
  4. วนซ้ำและแปลงคอลเลกชันด้วยไลบรารีมาตรฐาน
← กลับไปที่ Kotlin Academy