Lesson 28Collections
Collection Methods
Powerful Collection Methods
Swift provides many built-in methods to search, transform, and analyze collections. Master these to write cleaner code!
Searching Methods
.contains()Check if element exists
.first { } / .last { }Find first/last matching
.firstIndex(of:)Find index of element
.allSatisfy { }Check all match condition
Transform Methods
.map { }Transform each element
.filter { }Keep matching elements
.reduce()Combine into one value
Special Transform Methods
.compactMap { }Transform and remove nils
.flatMap { }Flatten nested collections
Method Chaining
Chain methods together for powerful one-liners: .filter { }.map { }.sorted()
main.swift
// Common collection methods work on all types!
let numbers = [5, 2, 8, 1, 9, 3, 7, 4, 6]
// SEARCHING
let hasEight = numbers.contains(8) // true
let firstEven = numbers.first { $0 % 2 == 0 } // 2
let lastEven = numbers.last { $0 % 2 == 0 } // 6
let indexOfNine = numbers.firstIndex(of: 9) // 4
// CHECKING CONDITIONS
let allPositive = numbers.allSatisfy { $0 > 0 } // true
let hasNegative = numbers.contains { $0 < 0 } // false
// TRANSFORMING
let doubled = numbers.map { $0 * 2 }
// [10, 4, 16, 2, 18, 6, 14, 8, 12]
let evens = numbers.filter { $0 % 2 == 0 }
// [2, 8, 4, 6]
let sum = numbers.reduce(0) { $0 + $1 }
// 45 (0 + 5 + 2 + 8 + ...)
// Short form
let product = numbers.reduce(1, *)
// 362880 (1 * 5 * 2 * 8 * ...)
// SORTING
let sorted = numbers.sorted() // [1, 2, 3, 4, 5, 6, 7, 8, 9]
let descending = numbers.sorted(by: >) // [9, 8, 7, 6, 5, 4, 3, 2, 1]
// CHAINING METHODS
let result = numbers
.filter { $0 > 3 } // [5, 8, 9, 7, 4, 6]
.map { $0 * 2 } // [10, 16, 18, 14, 8, 12]
.sorted() // [8, 10, 12, 14, 16, 18]
print(result)
// COMPACT MAP (removes nils)
let strings = ["1", "2", "hello", "3"]
let validNumbers = strings.compactMap { Int($0) }
// [1, 2, 3]
// FLAT MAP (flattens nested arrays)
let nested = [[1, 2], [3, 4], [5, 6]]
let flat = nested.flatMap { $0 }
// [1, 2, 3, 4, 5, 6]
// MIN and MAX
let smallest = numbers.min() // 1
let largest = numbers.max() // 9Try It Yourself!
Given an array of numbers 1-20, use method chaining to: filter evens, square them, and find the sum!