-
(Swift) 컬렉션 타입 [Array, Dictionary, Set]Programing Language/Swift 2019. 10. 10. 00:12728x90반응형
:: 컬렉션 타입 ::
- Array - 순서가 있는 리스트 컬렉션
- Dictionary - '키'와 '값'의 쌍으로 이루어진 컬렉션
- Set - 순서가 없고, 멤버가 유일한 컬렉션
1. Array
- 멤버가 순서(인덱스)를 가진 리스트 형태의 컬렉션 타입
- 여러가지 리터럴 문법을 활용할 수 있어 표현 방법이 다양합니다.
// 1. Array 선언 및 생성 var integers: Array<Int> = Array<Int>() // 위와 동일한 표현 // var integers: Array<Int> = [Int]() var integers: Array<Int> = [] // var integers: [Int] = Array<Int>() // var integers: [Int] = [Int]() // var integers: [Int] = [] // var integers = [Int]() // 2. 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] // 3. 불변 Array: let을 사용하여 Array 선언 let immutableArray = [1, 2, 3] <- 중요!!! // 수정이 불가능한 Array이므로 멤버를 추가하거나 삭제할 수 없습니다 //immutableArray.append(4) //immutableArray.removeAll()
- var를 사용해서 Array를 만들면 append로 값을 추가 할수 있고, let으로 Array를 만들면 상수 이기에 append로 추가 되지 않는다.
2. Dictionary
- '키'와 '값'의 쌍으로 이루어진 컬렉션 타입
- Array와 비슷하게 여러가지 리터럴 문법을 활용할 수 있어 표현 방법이 다양합니다.
// 1. Dictionary의 선언과 생성 // Key가 String 타입이고 Value가 Any인 빈 Dictionary 생성 var anyDictionary: Dictionary<String, Any> = [String: Any]() var anyDictionary: Dictionary<String, Any> = [:] <- 축약형 // 위와 동일한 표현 // var anyDictionary: Dictionary <String, Any> = Dictionary<String, Any>() // var anyDictionary: Dictionary <String, Any> = [:] // var anyDictionary: [String: Any] = Dictionary<String, Any>() // var anyDictionary: [String: Any] = [String: Any]() // var anyDictionary: [String: Any] = [:] // var anyDictionary = [String: Any]() // 2. 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) // 3. 불변 Dictionary: let을 사용하여 Dictionary 선언 let emptyDictionary: [String: String] = [:] <- 축약형 let initalizedDictionary: [String: String] = ["name": "yagom", "gender": "male"] // 불변 Dictionary이므로 값 변경 불가 //emptyDictionary["key"] = "value" // 키에 해당하는 값을 다른 변수나 상수에 할당하고자 할 때는 옵셔널과 타입 캐스팅 파트에서 다룹니다 // "name"이라는 키에 해당하는 값이 없을 수 있으므로 String 타입의 값이 나올 것이라는 보장이 없습니다. // 컴파일 오류가 발생합니다 // let someValue: String = initalizedDictionary["name"]
3. Set
- 중복되지 않는 멤버가 순서없이 존재하는 컬렉션
- Array, Dictionary와 다르게 축약형이 존재하지 않음
// 1. Set 생성 및 선언 var integerSet: Set<Int> = Set<Int>() // insert : 새로운 멤버 입력 // 동일한 값은 여러번 insert해도 한번만 저장됩니다. integerSet.insert(1) integerSet.insert(99) integerSet.insert(99) integerSet.insert(99) integerSet.insert(100) print(intigerSet) // {100, 99, 1} // contains: 멤버 포함 여부 확인 print(integerSet.contatins(1)) // true print(integerSet.contains(2)) // false // remove: 멤버 삭제 integerSet.remove(99) // {100, 1} integerSet.removeFirst() // {1} // count: 멤버 개수 integerSet.count // 1 // 2. Set의 활용 // 멤버의 유일성이 보장되기 때문에 집합 연산에 활용하면 유용합니다. let setA: Set<Int> = [1, 2, 3, 4, 5] let setB: Set<Int> = [3, 4, 5, 6, 7] // 합집합 let union: Set<Int> = 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<Int> = setA.intersection(setB) print(intersection) // [5, 3, 4] // 차집합 let subtracting: Set<Int> = setA.subtracting(setB) print(subtracting) // [2, 1]
728x90반응형'Programing Language > Swift' 카테고리의 다른 글
(Swift) 반복문 (0) 2019.10.10 (Swift) 조건문 정리 (0) 2019.10.10 (Swift) 함수 사용법 정리 (0) 2019.10.10 (Swift) 기본데이터 타입 [총정리] (0) 2019.10.09 안드로이드 개발자가 정리하는 Android, iOS 비교표 (0) 2019.10.09