ภาพรวม
Array ใน Kotlin เป็นโครงสร้างข้อมูลที่เก็บค่าประเภทเดียวกันในหน่วยความจำติดต่อกัน เข้าถึงได้ผ่านดัชนี (index) เริ่มจาก 0 มีขนาดคงที่และแก้ไขค่าได้ (mutable)
วิธีสร้าง Array
1. ใช้ arrayOf() - วิธีง่ายที่สุด
fun main() {
// Array ของ String
val subjects = arrayOf("Java", "C", "C++", "C#", "Kotlin")
// Array ของ Int
val numbers = arrayOf(1, 2, 3, 4, 5)
// Array แบบผสม (Any)
val mixed = arrayOf("Hello", 123, 3.14, true)
// วนลูปพิมพ์ค่า
for (i in subjects.indices) {
println("Subject[$i] = ${subjects[i]}")
}
// หรือใช้ forEachIndexed
subjects.forEachIndexed { index, value ->
println("Subject[$index] = $value")
}
}
2. ใช้ Array Constructor - สำหรับสร้างตามรูปแบบ
fun main() {
// Array ขนาด 5 ค่าเริ่มต้น = index * 2
val myArray = Array(5) { i -> i * 2 } // [0, 2, 4, 6, 8]
// Array ของ Object
data class Point(val x: Int, val y: Int)
val points = Array(3) { index -> Point(index * 10, index * 20) }
myArray.forEachIndexed { i, v -> println("[$i] = $v") }
}
3. Primitive Type Arrays - ประหยัดหน่วยความจำ
fun main() {
val intArray = intArrayOf(1, 2, 3, 4, 5) // IntArray
val doubleArray = doubleArrayOf(1.1, 2.2) // DoubleArray
val booleanArray = booleanArrayOf(true, false) // BooleanArray
val charArray = charArrayOf('a', 'b', 'c') // CharArray
val longArray = longArrayOf(100L, 200L) // LongArray
// รองรับ: ByteArray, ShortArray, FloatArray
// Constructor แบบ Primitive
val zeros = IntArray(10) { 0 } // [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
}
4. emptyArray() และ arrayOfNulls()
fun main() {
// Array ว่างขนาด 0
val empty = emptyArray<String>() // []
// Array ขนาด 3 เต็มไปด้วย null (ต้องเป็น nullable type)
val nulls: Array<String?> = arrayOfNulls(3) // [null, null, null]
}
คุณสมบัติสำคัญของ Array
| คุณสมบัติ | รายละเอียด |
|---|---|
| ขนาดคงที่ | ไม่สามารถเพิ่ม/ลดขนาดได้หลังสร้าง |
| Mutable | แก้ไขค่าผ่านดัชนีได้: arr[0] = "New" |
| เข้าถึงแบบสุ่ม | O(1) ผ่าน index |
| Primitive Arrays | มีคลาสเฉพาะ (IntArray, DoubleArray...) ไม่ใช้ Generic |
การแปลงระหว่าง List และ Array
fun main() {
val list = listOf("A", "B", "C")
val array = list.toTypedArray() // List -> Array
val backToList = array.toList() // Array -> List (Immutable)
val mutableList = array.toMutableList() // Array -> MutableList
}