🍃 출처 : 앨런 swift 문법 마스터 스쿨
- 데이터를 효율적으로 관리하기 위한 자료형
- 데이터의 저장, 표시
1) Array (배열) : 데이터를 순서대로 저장
2) Dictionary (딕셔너리) : 데이터를 키와 값으로 하나의 쌍을 만들어 관리, 순서가 없는 컬렉션
3) Set (집합) : 수학에서 집합과 같은, 순서가 없는 컬렉션
- 데이터를 순서대로 저장하는 컬렉션 (자동으로 순번 지정)
var numsArray = [1,2,3,4,5]
- [] 대괄호로 묶는다.
- 1개의 배열에는 동일한 타입의 데이터가 들어간다.
- (순서가 있기에) 값은 중복이 가능하다.
- 인덱스 시작은 0부터, 각각의 데이터는 요소(element)라고 한다.
타입 표기
let strArray1: [String] = []
빈 배열의 생성
let emptyArray1: [Int] = []
배열의 기본 기능
numsArray.count // 배열 안에 몇 개 들어있는지
numsArray.isEmpty // t / f
numsArray.contains(1) // 1을 포함하고 있는지
numsArray.randomElement() // 랜덤으로 값 하나 추출
numsArray.swapAt(0, 1) // 값들의 위치 바꾸기
배열의 인덱스
array [0]
array [인덱스]
array.first
array.last
array.startIndex
array.endIndex
배열의 삽입
var alphabet = ["A","B","C","D","E"]
alphabet.insert("C", at: 4)
alphabet.append(5)
alphabet[0] = "a" // 요소교체
alphabet[0...2] = ["x","y","z"] // 범위교체
alphabet[0...1] = [] // 원하는 범위 삭제
alphabet += ["H"] // 추가
alphabet.remove(at: 2) // 어떤 item이 배열에서 제거 되는데, 제거한 item을 리턴. 배열에는 더이상 없지만, 빼내서 가지고 있다가 받는 곳이 있으면 넘기고 아니면 버린다
- 데이터를 키와 값으로 하나의 쌍으로 만들어 관리하는 컬렉션
let dic: Dictionary<String, String> = ["A": "Apple", "B":"Banana"]
- 키 값은 유일해야 함(중복 불가능), 값은 중복 가능
- 동일한 타입 쌍의 데이터만 담을 수 있다.
ex) [Int:String] , [String:String]- 딕셔너리의 값(value)에 중첩 사용 가능
- Key 값은 hashable 해야 함
기본
dic.count
dic.isEmpty
dic.randomElement()
요소 접근
dic["A"]
키/값들
dic.keys //컬렉션
dic.values //컬렉션
dic.keys.sorted() //배열
dic.values.sorted() //배열
업데이트
dic["A"] = "Apple"
dic.updateValue("City", forkey: "C")
삭제
dic["B"] = nil
dic.removeValue(forKey: "A")
dic.removeAll
- 수학에서의 집합과 비슷한 연산을 제공하는, 순서가 없는 컬렉션
let set: Set <Int> = [1,1,2,3]
- 배열과 구분이 안되기 때문에 대괄호로 묶음, 반드시 생성 시 타입 선언을 해야 함
- 요소값을 중복으로 넣어도, 집합의 의미 상 요소 중복 저장 안됨
- 따라서 append 함수를 제공하지 않음
var set: Set = [1,1,2,2,3,3,3] // {2,3,1} print(set) // [2,3,1] ➡️ 출력 할 때마다 순서 바뀜
- 딕셔너리와 유사한 형태이지만, 배열처럼 순서가 있는 컬렉션
- key 값이 hashable할 필요 없음 (검색 알고리즘 상 빠르지 않음)
- key 값이 동일한 것도 가능
let introduce: KeyValuePairs = ["first":"Hello","second":"MyName","third":"is"]
기본
introduce.count introduce.isEmpty
요소에 접근
print("\(introduce[0].key)는 \(introduce[0].value)입니다.")
- 배열처럼 인덱스로 접근 가능
- 요소에서는 튜플 방식으로 접근