컬렉션 타입
- Array - 순서가 있는 리스트 컬렉션
- Dictionary - `키`와 `값`의 쌍으로 이루어진 컬렉션
- Set - 순서가 없고, 멤버가 유일한 컬렉션
Array
Array는 멤버가 순서(인덱스)를 가진 리스트 형태의 컬렉션 타입입니다.
Array 선언 및 생성
Array는 여러 리터럴 문법을 활용할 수 있어서 표현 방법이 다양합니다
// 빈 Int Array 생성 var integers: Array= Array () // 같은 표현 // var integers: Array = [Int]() // var integers: Array = [] // var integers: [Int] = Array () // var integers: [Int] = [Int]() // var integers: [Int] = [] // var integers = [Int]()
Array 활용
integers.append(1) integers.append(100) // Int 타입이 아니므로 Array에 추가할 수 없습니다 //integers.append(101.1) print(integers) // [1, 100] // 멤버 포함 여부 확인 print(integers.contains(100)) // true print(integers.contains(99)) // false // 멤버 교체 integers[0] = 99 // 멤버 삭제 integers.remove(at: 0) integers.removeLast() integers.removeAll() // 멤버 수 확인 print(integers.count) // 인덱스를 벗어나 접근하려면 익셉션 런타임 오류발생 //integers[0]
let을 사용하여 Array를 선언하면 불변 Array가 됩니다
let immutableArray = [1, 2, 3] // 수정이 불가능한 Array이므로 멤버를 추가하거나 삭제할 수 없습니다 //immutableArray.append(4) //immutableArray.removeAll()
Dictionary
Dictionary는 키와 값의 쌍으로 이루어진 컬렉션 타입입니다.
Dictionary의 선언과 생성
Dictionary는 여러 리터럴 문법을 활용할 수 있어서 표현 방법이 다양합니다
// Key가 String 타입이고 Value가 Any인 빈 Dictionary 생성 var anyDictionary: Dictionary= [String: Any]() // 같은 표현 // var anyDictionary: Dictionary = Dictionary () // var anyDictionary: Dictionary = [:] // var anyDictionary: [String: Any] = Dictionary () // var anyDictionary: [String: Any] = [String: Any]() // var anyDictionary: [String: Any] = [:] // var anyDictionary = [String: Any]()
Dictionary 활용
// 키에 해당하는 값 할당 anyDictionary["someKey"] = "value" anyDictionary["anotherKey"] = 100 print(anyDictionary) // ["someKey": "value", "anotherKey": 100] // 키에 해당하는 값 변경 anyDictionary["someKey"] = "dictionary" print(anyDictionary) ["someKey": "dictionary", "anotherKey": 100] // 키에 해당하는 값 제거 anyDictionary.removeValue(forKey: "anotherKey") anyDictionary["someKey"] = nil print(anyDictionary)
let을 사용하여 Dictionary를 선언하면 불변 Dictionary가 됩니다
let emptyDictionary: [String: String] = [:]
let initalizedDictionary: [String: String] = ["name": "yagom", "gender": "male"]
// 불변 Dictionary이므로 값 변경 불가
//emptyDictionary["key"] = "value"
키에 해당하는 값을 다른 변수나 상수에 할당하고자 할 때는 옵셔널과 타입 캐스팅 파트에서 다룹니다
// "name"이라는 키에 해당하는 값이 없을 수 있으므로 // String 타입의 값이 나올 것이라는 보장이 없습니다. // 컴파일 오류가 발생합니다 let someValue: String = initalizedDictionary["name"]
Set
Set는 순서가 없고, 멤버가 유일한 것을 보장하는 컬렉션 타입입니다.
Set의 선언과 생성
// 빈 Int Set 생성 var integerSet: Set= Set () integerSet.insert(1) integerSet.insert(100) integerSet.insert(99) integerSet.insert(99) integerSet.insert(99) print(integerSet) // [100, 99, 1] print(integerSet.contains(1)) // true print(integerSet.contains(2)) // false integerSet.remove(100) integerSet.removeFirst() print(integerSet.count) // 1
Set는 집합연산에 많이 활용됩니다
// Set는 집합 연산에 꽤 유용합니다 let setA: Set= [1, 2, 3, 4, 5] let setB: Set = [3, 4, 5, 6, 7] // 합집합 let union: Set = setA.union(setB) print(union) // [2, 4, 5, 6, 7, 3, 1] // 합집합 오름차순 정렬 let sortedUnion: [Int] = union.sorted() print(sortedUnion) // [1, 2, 3, 4, 5, 6, 7] // 교집합 let intersection: Set = setA.intersection(setB) print(intersection) // [5, 3, 4] // 차집합 let subtracting: Set = setA.subtracting(setB) print(subtracting) // [2, 1]
생각해보기
다음과 같은 경우에는 각각 어떤 컬렉션 타입을, 상수/변수 선언 중 어떤 것을 사용하면 유용할지 생각해 봅시다.
- 영어 알파벳 소문자를 모아두는 컬렉션
- 책의 제목과 저자 정리를 위한 컬렉션
- 우리반 학생 명부 작성을 위한 컬렉션
by yagom
facebook : http://www.facebook.com/yagomSoft
facebook group : https://www.facebook.com/groups/yagom/
p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기
↓↓↓ 블로거에게 공감은 큰 힘이 됩니다 ↓↓↓