Collection
- Array (배열) : 순서에 따라 데이터가 정렬된 목록 형태의 자료형
- Dictionary (딕셔너리) : 배열과 비슷하나 Key를 사용하여 Key 값으로 연관된 데이터들이 순서없이 모인 자료형
- Set (집합) : 중복되지 않은 유일한 데이터들이 모인 집합 형태의 자료형
- Tuple (튜플) : 종류에 상관없이 데이터들을 모은 자료형
Array
- 순서가 있음
- 인덱스가 0 부터 시작
- 데이터를 추가될 때마다 차례대로 증가함
- 배열에 저장할 데이터의 타입은 다 가능하지만, 저장될 데이터의 타입은 모두 같아야함
- 선언 시 배열에 저장할 데이터의 타입을 명시해야함
-
배열의 크기가 동적으로 확장, 또는 축소
- array 선언
var name : Array<String> = [ "a", "b", "c" ] var name2 = ["a","b","c"] var name3 = Array<String>(repeating : "re",count : n) // re라는 문자열을 n번만큼 array를 만듬
-
array 명령어
name.startIndex
- array name의 첫번째 인덱스 위치를 가져옴
name.endIndex
- array name의 마지막 요소에 + 1 한 값을 가져옴
name.contains(index)
- name 안에 index 가 있는지 검사 후 있으면 true, 없으면 false
name.index(of:index)
- name 안에 index가 있는지 검사 후 있으면 index의 위치를 반환
name.append(index)
- name 맨 뒤에 index를 추가
name.insert("index", at:n)
- name에 n의 위치에 index를 추가
name.endIndex.advanced(by : n)
- endIndex의 위치에서 n 만큼 위치를 반환
name.remove(at.index)
- index 에 해당하는 위치에 있는 요소 삭제
name.removeall()
- array에 있는 모든 요소 삭제
Dictionary
- 순서가 없음
- 고유한 key 값과 변수로 구성
- Dictionary 선언
var dictionary = ["key":"A","key2":"B", "key3","C"]
-
Dictionary 명령어
dictionary.isEmpty
- dictionary 가 비어있으면 false 아니면 true
dictionary["key"]
- key 값의 value를 가져옴
dictionary["key"]="index"
- dictinoary 의 key 값에 해당하는 곳의 index 초기화
- 초기화 전의 값을 삭제
dictionary.updateValue("index", forkey : "key")
- key 값에 해당하는 index 초기화
- 초기화 전의 값을 바로 지우지 않음
dictionary["key"]=nil
- key 값에 해당하는 index 삭제
- 삭제 전 값을 바로 삭제
dictionary.removeValue(forKey="key")
- key 값에 해당하는 index 삭제
- 삭제 전 값을 보유
Set
- 순서 없음
- 요소들이 각각 하나의 고유한 값만을 가짐
- 요소들이 중복없이 한 번만 저장되어야 하는 데이터들을 다룰 때 사용
-
형태가 array 와 비슷해서 set 키워드를 항상 사용해야 함
-
Set 선언
let setNum : Set<String> = ["apple", "Orange", "Melon"] let numbers: Set = [1,2,3,4] let emptySet = Set<String>()
-
Set 명령어
let fileteredSet = numbers.filter{ (element) -> Bool in return element.hasPrefix("i")}
- filter 요소가 있는지 검사
- hasPrefix 해당 인덱스를 가진 요소가 있는지 검사
numbers.insert("ddd")
- Set 에 순서 상관없이 요소 추가
numbers.remove(1)
- Set 에서 인덱스 값을 가지고 있는 요소 삭제
numbers.removeall()
- 모든 요소 삭제
numbers.elementsEqual(numbers2)
- 두 Set 을 비교 요소 뿐만 아니라 순서도 같아야 함
numbers == numbers2
- 요소만 같으면 참
numbers.isSubSet(of:numbers2)
- numbers 가 numbers2 의 부분집합이면 true, 그렇지 않으면 false
numbers.isSuperSet(of:numbers2)
- numbers 가 numbers2 의 부모집합이면 true, 그렇지 않으면 false
numbers.isDisjoint(with:numbers2)
- numbers 와 numbers2의 공통 값이 있으면 false, 없으면 true
numbers.union(numbers2)
- numbers 와 numbers2 의 모든 값을 선택하여 새로운 집합을 만듬
numbers.intersection(numbers2)
- numbers 와 numbers2 두 집합에서 공통되는 값만 선택하여 새 집합을 만듬
numbers.symmetricDifference(numbers2)
- numbers 와 numbers2 두 집합에서 공통되지 않는 값을 선택하여 새로운 집합을 만듬
numbers.subtract(numbers2)
- numbers 값 중 numbers2에 없는 값을 선택하여 새로운 집합을 만듬
Tuple
- 배열과 딕셔너리와 달리 여러가지 타입의 아이템을 저장할 수 있음
- 한번 선언되고 나면 더 이상 변경이 불가능( 상수와 비슷 )
- Tuple 선언
let values = ( "String", "A", false, 3.14, 95 )
- 인덱스가 0부터 시작