Swift에서는 튜플 외에도 많은 수의 데이터를 묶어서 저장하고 관리할 수 있는 컬렉션 타입을 제공한다.
- 배열
- 딕셔너리
- 세트
1️⃣ 배열
var names: Array<String> = ["yejin", "chulsoo", "yonghee", "yejin"]
// Array<String> == [String]
var names: [String] = ["yejin", "chulsoo", "yonghee", "yejin"]
var emptyArray: [Any] = [Any]() //Any를 데이터 요소로 갖는 빈 배열을 생성
var emptyArray: [Any] = Array<Any>() // 위 선언과 같은 동작
var emptyArray: [Any] = [] // 배열과 타입을 명시해줬다면 []만으로도 빈 배열을 생성할 수 있다.
print(emptyArray.isEmpty)
print(names.count)
// true
// 4
➰ 배열에 사용되는 다양한 메서드와 프로퍼티
- first, last : 배열의 맨 처음과 맨 마지막 요소를 가지고올 수 있다.
- index(of:) : 요소의 인덱스를 알 수 있다. (만약 중복된 요소가 있다면 제일 먼저 발견되는 요소의 인덱스를 반환)
- append(_:) : 맨 뒤에 요소를 추가할 수 있다.
- insert(_:at:) : 중간에 요소 삽입
- remove(_:) : 요소의 삭제
- ["yejin","hi"]와 같은 여러개의 요소를 삽입 혹은 삭제하고 싶다면? contentsOf: ["yejin", "hi"] 로!
2️⃣ 딕셔너리
- 키는 같은 이름을 중복해서 사용할 수 없다.
// typelias를 통해 좀 더 단순하게 표현할 수 있다.
typealias StringIntDictionary = [String: Int]
// 키는 String, 값은 Int 타입인 빈 딕셔너리를 생성
var numberForName: Dictionary<String, Int> = Dictionary<String, Int>()
// [String: Int] = Dictionary<String, Int>
// 딕셔너리와 키와 값 타입을 정확히 명시해 줬다면 [:] 만으로도 빈 딕셔너리를 생성할 수 있다.
var numberForName: [String: Int] = [:]
// 초기 값을 주어 생성하기
var numberForName: [String: Int] = ["yejin": 23]
➰ 딕셔너리에 사용되는 다양한 메서드
- removeValue(forKey: "특정 키") : 특정 키에 해당하는 값을 제거
❗️ 딕셔너리는 배열과 다르게 딕셔너리 내부에 없는 키로 접근해도 오류가 발생하지 않는다. 다만, nil을 반환할 뿐!
3️⃣ 세트
- 세트 내의 값은 모두 유일한 값, 즉 중복된 값이 없어야 한다.
- 세트의 요소로는 해시가능한 값이 들어와야 한다.
var names: Set<String> = Set<String>() // 빈 세트 생성
var names: Set<String> = [] // 빈 세트 생성
//Array와 마찬가지로 대괄호를 사용합니다.
var names: Set<String> = ["yejin", "hi", "hello", "yejin"]
//중복된 값이 있으므로 names.count 시, 3 출력
// 그렇기 때문에 타입 추론을 사용하게 되면 컴파일러는 Set가 아닌 Array로 타입을 저장한다.
var numbers = [100, 200, 300]
print(type(of: numbers)) // Array<Int>
➰ 세트의 다양한 매서드
- insert(_:) : 세트에 요소 추가 시
- remove(_:) : 세트에 요소 삭제 시, 해당 요소가 삭제된 후 반환
- intersection : 교집합
- symmetricDifference : 여집합
- union : 합집합
- subtracting : 차집합
- sorted() : 정렬된 배열 반환
- isDisjoint(with:) : 서로 배타적인지
- isSubset(of:) : 부분 집합인지
- isSuperset(of:) : 전체집합인지
4️⃣ 컬렉션에서 입의의 요소 추출과 뒤섞기
randomElements() : 임의의 요소 추출
suffle() : 임의로 요소 뒤섞기
Reference
Swift : 스위프트 프로그래밍 도서 - 야곰
'Swift' 카테고리의 다른 글
[Swift] 함수 : 입출력 매개변수 활용, 데이터 타입으로써의 함수, 중첩 함수, @discardableResult (0) | 2022.03.16 |
---|---|
[Swift] 사용자 정의 연산자 : 전위, 중위, 후위 연산자 (0) | 2022.03.15 |
[Swift] 열거형 ( 항목 순회, 순환 열거형 ) (0) | 2022.03.15 |
[Swift] CustomStringConvertible > description (0) | 2022.03.14 |
[Swift] 스위프트의 함수형 프로그래밍 패러다임 (0) | 2022.03.14 |