Bỏ qua để đến nội dung

🎯 Set

🎯 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.


Set là tập hợp không có thứ tự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

// 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]

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}
val set = setOf("Apple", "Banana", "Orange")
println("Apple" in set) // true
println(set.contains("Mango")) // false

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]

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]
}

  • 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