Set trong Kotlin
🎯 Mục tiêu: Hiểu Set - collection không cho phép phần tử trùng lặp, hữu ích cho các thao tác tập hợp.
💡 Khái niệm
Set là tập hợp không có thứ tự và không có phần tử trùng lặp.
val numbers = setOf(1, 2, 3, 2, 1)
println(numbers) // [1, 2, 3] - chỉ giữ unique values📝 Tạo Set
// Immutable Set
val set = setOf(1, 2, 3)
val emptySet = emptySet<Int>()
// Mutable Set
val mutableSet = mutableSetOf(1, 2, 3)
val hashSet = hashSetOf(1, 2, 3) // HashSet
val linkedSet = linkedSetOf(1, 2, 3) // Giữ thứ tự insertion
val sortedSet = sortedSetOf(3, 1, 2) // TreeSet, [1, 2, 3]🔄 Operations
Add & Remove
val set = mutableSetOf(1, 2, 3)
set.add(4) // {1, 2, 3, 4}
set.add(2) // {1, 2, 3, 4} - 2 đã có, không thêm
set += 5 // {1, 2, 3, 4, 5}
set.remove(1) // {2, 3, 4, 5}
set -= 2 // {3, 4, 5}Kiểm tra membership
val set = setOf("Apple", "Banana", "Orange")
println("Apple" in set) // true
println(set.contains("Mango")) // false🎯 Set Operations (Toán tập hợp)
val a = setOf(1, 2, 3, 4)
val b = setOf(3, 4, 5, 6)
// Union (Hợp)
println(a union b) // [1, 2, 3, 4, 5, 6]
println(a + b) // [1, 2, 3, 4, 5, 6]
// Intersection (Giao)
println(a intersect b) // [3, 4]
// Difference (Hiệu)
println(a subtract b) // [1, 2]
println(a - b) // [1, 2]
// Symmetric Difference (Hiệu đối xứng)
val symDiff = (a - b) + (b - a)
println(symDiff) // [1, 2, 5, 6]🛠️ Thực hành
Bài tập: Tìm skills chung của 2 ứng viên
fun main() {
val candidate1Skills = setOf("Kotlin", "Java", "Android", "Git")
val candidate2Skills = setOf("Kotlin", "Swift", "iOS", "Git")
// TODO: Tìm skills chung và skills khác biệt
}Lời giải:
fun main() {
val candidate1Skills = setOf("Kotlin", "Java", "Android", "Git")
val candidate2Skills = setOf("Kotlin", "Swift", "iOS", "Git")
val commonSkills = candidate1Skills intersect candidate2Skills
val allSkills = candidate1Skills union candidate2Skills
val uniqueC1 = candidate1Skills - candidate2Skills
val uniqueC2 = candidate2Skills - candidate1Skills
println("Common: $commonSkills") // [Kotlin, Git]
println("All: $allSkills") // [Kotlin, Java, Android, Git, Swift, iOS]
println("Only C1: $uniqueC1") // [Java, Android]
println("Only C2: $uniqueC2") // [Swift, iOS]
}✅ Checklist
- Hiểu Set không có phần tử trùng
- Sử dụng
setOf(),mutableSetOf() - Thực hiện union, intersect, subtract
Tiếp theo: Map
Last updated on