FE 공부/Swift

Swift _ Collection

꼬질꼬질두부 2022. 10. 4. 13:45
어떤 대상들을 하나의 그룹으로 묶어두거나 모아둔 것 _ 데이터 모음의 자료형

- Array // 데이터를 순서대로 저장
- Dictionary // key와 값을 하나의 쌍으로 저장
- Set // 집합연산

 

 

Foundation Collection Swift Collection
- class로 구현된 collection
- 참조 형식으로 사용 시 이용
- 객체 형식의 데이터만 저장 가능
- 불변 _ NSArray NSDictionary NSSet
- 가변 _ NSMutableArray NSMutableDictionary NSMutableSet
*collection의 가변성은 요소의 가변성에 영향을 미치지 않음
- 구조체로 구현된 collection
- 값 형식
- 객체 형식과 값 형식 모두 저장 가능
- 불변 _ let
- 가변 _var
*collection의 가변성은 요소의 가변성에 영향을 미치지 않음

 

Array 배열

- 저장된 순서대로 정렬됨

- Single Type

- 개별 요소로 처리

- 0 based index

- 중간의 요소가 삭제되면 뒤의 인덱스들이 이동해 그 자리를 차지함

//Array Literal
[elem, elem, elem ...]//자동 추론이 가능하기 때문에 타입을 명시해주지않아도 Array로 저장된다

//Array Type
Array<T>
[T]

let strArr: Array<String>
let strArr: [String]

//예제
let nums = [1,2,3]
let emptyArray:[Int] = []
let emptyArray2 = Array<Int>()
let emptyArray3 = [Int]()

Array 연산

var numbers = [1,2,3,4]
numbers.append(5) // [1, 2, 3, 4, 5]
numbers.remove(at: 1) // 인덱스 1번째에 있는 2를 제거한다.
// 첫번째 값을 제거할 때: removeFirst()
//마지막 값을 제거할 때:  removeLast()
// 마지막 값을 반환하면서 제거하는 방법: popLast()
// 빈 배열로 만드는 방법: removeAll()
//원하는 값의 인덱스를 찾을 때 firstIndex(of:)
...

 

Dictionary

- 사전과 유사한 형태로 값을 저장: key와 value_모든 key의 자료형이 같아야 하고 value 자료형이 같아야 함

- 정렬되지 않은 collection

- key를 통해서 값을 전달

//Dictionary literal
[key: value, key: value, ...]

var dict = ["A": "Apple", "B": "Banana"]

//Dictionary Type
Dictionary<K,V> //정식문법
[K:V]//단축문법

let dict1: Dictionary<String, Int>
let dict2: Dictionary[String: Int]

//Creating a Dictionary

let dict = ["A": "Apple", "B": "Banana"]
let emptyD: [String: String] = [:]
let emptyD2 = [String: String]()
let emptyD3 = Dictionary<String, String>()

 

Set

- 검색 속도가 중요한 경우 사용 _ hashing 알고리즘을 사용하기때문

- Single Type

- 동일한 값 저장 안함

-  하나의 데이터를 하나의 요소로 사용

- 정렬되지 않음

- 인덱싱도 사용 안함

//Set Type
Set<T>
let set: Set<Int> = [1,2,2,3,3,3]//직접 지정해주지 않으면 Array로 인식
set.count//3 _ 중복된 요소를 생략하기 때문

 

 

저장된 요소의 수 확인
.count
비어있는지 확인
.isEmpty