정의
- 컬렉션 타입은 데이터들의 집합으로, Swift에서 컬렉션 타입은 지정된 타입의 데이터 묶음입니다.
- Swift에서 컬렉션 타입으로 Array, Set, Dictionary 세 가지를 지원합니다.
- 세 가지 컬렉션 타입은 변수(var)에 할당하면 변경이 가능하고 상수(let)에 할당하면 변경 불가능합니다.
- Swift에서 컬렉션 타입들은 모두 제네릭 컬렉션으로 구현되어있습니다.
2022.02.08 - [분류 전체보기] - 제네릭 [ Generic ]
1, 배열
- 배열 타입은 Array로 적으며, 축약형[Element]으로 사용할 수도 있습니다.
배열 생성
빈 배열 생성
// Int형 빈 배열 생성
var someInts = [Int]()
// 배열에 데이터 추가
someInts.append(3)
// 배열 비우기
someInts = []
기본 값 빈 배열 생성
- repeating 메서드와 count 메서드를 이용해 기본 값으로 빈 배열을 생성할 수 있습니다.
var threeDoubles = Array(repeating: 0.0, count: 3)
다른 배열을 추가한 배열 생성
var threeDoubles = Array(repeating: 0.0, count: 3)
// threeDoubles : [0.0, 0.0, 0.0]
var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
// anotherThreeDoubles : [2.5, 2.5, 2.5]
var sixDoubles = threeDoubles + anotherThreeDoubles
// sixDoubles : [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]
리터럴을 이용한 배열의 생성
- [Value1, Value2, Value 3] 형태를 이용해 배열을 생성할 수 있습니다.
- 1, 2 번 모두 동일한 배열 생성입니다. (2번은 1번 보다 더 간단하게 선언하는 방법)
1, var shoppingList: [String] = ["Eggs", "Milk"]
2, var shoppingList = ["Eggs", "Milk"]
배열의 접근 및 변경
배열의 원소 개수 확인
var shoppingList = ["Eggs", "Milk"]
print("The shopping list contains \(shoppingList.count) items.")
// The shopping list contains 2 items.
배열이 비었는지 확인
var shoppingList = ["Eggs", "Milk"]
if shoppingList.isEmpty {
print("The shopping list is empty.")
} else {
print("The shopping list is not empty.")
}
배열의 원소 추가
// 기본 배열
var shoppingList = ["Eggs", "Milk"]
// 배열에 원소 추가
shoppingList.append("Four")
// 배열에 원소 추가2
shoppingList += ["Baking Powder"]
shoppingList += [Chocolate Spread", "Cheese", "Butter"]
특정 위치 원소 접근
var shoppingList = ["Eggs", "Milk"]
var firstItem = shoppingList[0]
// "Egges"
shoppingList[4..6] = ["Bananas", "Apples"]
// 4, 5, 6번째 인덱스 아이템을 Banana, Apples로 변환
// 즉, 아이템 3개가 2개로 줄었다.
특정 위치에 원소 추가/삭제/접근
// 0번 인덱스에 원소 추가
shoppingList.insert("Maple Syrup", at:0)
// 0번 인덱스 원소 삭제
let mapleSyrup = shoppingList.remove(at: 0)
// 0번 인덱스 원소 접근
firstItem = shoppingList[0]
2, Set
- Swift에서 Set은 같은 데이터 타입의 값들을 순서 없이 저장하는 리스트입니다.
- 배열과 비슷하지만, 순서가 없기 때문에 서로 같은 값은 구분할 수 없으며 중복 값은 허용되지 않습니다.
- Swift에서 Set은 순서가 중요하지 않거나, Set에 저장된 각 값들이 유일 값일 때 사용할 것을 권장합니다.
- set을 사용할 때는 축약해서 사용할 경우 Swfit가 배열로 인식하기 때문에 축약형을 사용하지 않습니다.
빈 Set 생성
// 빈 set 생성
var letters = Set<Character>()
// set에 데이터 추가
letters.insert("a")
// set 초기화
letters = []
배열 리터럴을 이용한 set의 생성
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
- 타입추론으로 선언
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]
Set의 접근 및 변경
Set 원소 개수 확인
// set 생성
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
// set 원소 개수 확인
print("I have \(favoriteGenres.count) favorite music genres.")
Set 비었는지 확인
if favoriteGenres.isEmpty {
print("As far as music goes, I'm not picky.")
} else {
print("I have particular music preferences.")
}
Set 원소 추가/삭제/확인
추가
favoriteGenres.insert("Jazz")
삭제
if let removedGenre = favoriteGenres.remove("Rock") {
print("\(removedGenre)? I'm over it.")
} else {
print("I never much cared for that.")
}
확인
if favoriteGenres.contains("Funk") {
print("I get up on the good foot.")
} else {
print("It's too funky in here.")
}
Set 명령
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
oddDigits.union(evenDigits).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersection(evenDigits).sorted()
// []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]
oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]
Set 동등비교와 멤버 여부 확인
- isDisjoint(with:) = 두 값 비교 시 공통 값이 없는 경우 True 반환
let houseAnimals: Set = ["🐶", "🐱"]
let farmAnimals: Set = ["🐮", "🐔", "🐑", "🐶", "🐱"]
let cityAnimals: Set = ["🐦", "🐭"]
houseAnimals.isSubset(of: farmAnimals)
// 참
farmAnimals.isSuperset(of: houseAnimals)
// 참
farmAnimals.isDisjoint(with: cityAnimals)
// 참
3, Dictionary
- Dictionary는 순서없이 키(Key)와 값(Value) 한 쌍으로 데이터를 저장하는 컬렉션 타입입니다.
빈 Dictionary 생성
// 생성
var namesOfIntegers = [Int: String]()
// 데이터 추가
namesOfIntegers[16] = "sixteen"
// 초기화
namesOfIntegers = [:]
리터럴을 이용한 Dictionary 생성
var airports: [String: String] = = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
Dictionary 접근 및 변경
Dictionary 개수 확인
print("The airports dictionary contains \(airports.count) items.")
빈 Dictionary 확인
if airports.isEmpty {
print("The airports dictionary is empty.")
} else {
print("The airports dictionary is not empty.")
}
값 할당
airports["LHR"] = "London"
내용 출처
https://jusung.gitbook.io/the-swift-language-guide/language-guide/04-collection-types
'iOS > Swift 문법 심화 학습' 카테고리의 다른 글
Dictionary (0) | 2022.04.19 |
---|---|
Optional (0) | 2022.04.12 |
서브스크립트 [ Subscript ] (0) | 2022.02.15 |
프로퍼티 [ Properties ] (0) | 2022.02.14 |
옵셔널 체이닝 [ Optional Chaining ] (0) | 2022.02.10 |
댓글