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 listmutableListOf()tạo mutable list- filter, map, reduce cho transformations
- sorted, reversed cho sắp xếp
- toMutableList() để convert
Last updated on