Skip to Content
Kotlin📘 Ngôn ngữ KotlinList - Mutable và Immutable

List trong Kotlin - Mutable và Immutable

1. Giới thiệu

Kotlin phân biệt rõ List (immutable) và MutableList (mutable).

2. Immutable List

fun main() { val numbers = listOf(1, 2, 3, 4, 5) val names = listOf("Alice", "Bob") val empty = emptyList<String>() println(numbers[0]) // 1 println(numbers.size) // 5 // numbers.add(6) // Error! Không thể thay đổi }

3. Mutable List

fun main() { val numbers = mutableListOf(1, 2, 3) numbers.add(4) numbers.add(0, 0) // Thêm vào vị trí 0 numbers.addAll(listOf(5, 6)) numbers.remove(0) numbers.removeAt(0) println(numbers) // [2, 3, 4, 5, 6] }

4. Truy cập phần tử

fun main() { val list = listOf(10, 20, 30, 40, 50) println(list[0]) // 10 println(list.first()) // 10 println(list.last()) // 50 println(list.getOrNull(10)) // null println(list.getOrElse(10) { -1 }) // -1 }

5. Duyệt List

fun main() { val list = listOf("a", "b", "c") // for-in for (item in list) { println(item) } // withIndex for ((i, v) in list.withIndex()) { println("$i: $v") } // forEach list.forEach { println(it) } }

6. Filter và Map

fun main() { val numbers = listOf(1, 2, 3, 4, 5, 6) // filter val evens = numbers.filter { it % 2 == 0 } println(evens) // [2, 4, 6] // map val doubled = numbers.map { it * 2 } println(doubled) // [2, 4, 6, 8, 10, 12] // chain val result = numbers .filter { it > 2 } .map { it * 10 } println(result) // [30, 40, 50, 60] }

7. Reduce và Fold

fun main() { val numbers = listOf(1, 2, 3, 4, 5) val sum = numbers.reduce { acc, n -> acc + n } println(sum) // 15 val product = numbers.fold(1) { acc, n -> acc * n } println(product) // 120 }

8. Sorting

fun main() { val list = mutableListOf(3, 1, 4, 1, 5) // Không thay đổi list gốc println(list.sorted()) // [1, 1, 3, 4, 5] println(list.sortedDescending()) // Thay đổi list gốc list.sort() // Sort by data class Person(val name: String, val age: Int) val people = listOf(Person("Bob", 30), Person("Alice", 25)) println(people.sortedBy { it.age }) }

9. Các operations khác

fun main() { val list = listOf(1, 2, 3, 4, 5) println(list.take(3)) // [1, 2, 3] println(list.drop(2)) // [3, 4, 5] println(list.distinct()) // Loại trùng println(list.reversed()) // [5, 4, 3, 2, 1] println(list.chunked(2)) // [[1, 2], [3, 4], [5]] }

10. Chuyển đổi

fun main() { val list = listOf(1, 2, 3) // List -> MutableList val mutable = list.toMutableList() // List -> Set val set = list.toSet() // List -> Array val array = list.toTypedArray() }

📝 Tóm tắt

  • listOf() tạo immutable list
  • mutableListOf() tạo mutable list
  • filter, map, reduce cho transformations
  • sorted, reversed cho sắp xếp
  • toMutableList() để convert
Last updated on