Collection이란, 영어를 그대로 한국어로 번역한다면, '모아둔 것' 이라고 볼 수 있습니다.
그럼 아마 Collection이란 모아둔 어떤 것에 대한 이야기일 겁니다! 그리고 그 Collection은 Array, Dictionary, Set..등등의 모습으로 swift에서 존재합니다.
사실, Swift를 공부하는 사람들의 경우에는 대부분이 이미 다른 언어를 첫번째 언어로 공부하고 시작하는 비율이 많을 것 같기 때문에,
Collection이라 불리는 Array, Dictionary, Set에 대해서 어느 정도 알고 있을 것입니다.
그러면..! 저는 내 머리 속의 정보들을 정리하기 위해서 글을 작성해 보겠습니다!
1. Array
말 그대로 배열입니다.
var array1:[Int] = []
var array2:[String] = []
let array3:[Int] = []
swift에서 배열의 선언은 위와 같은 형식으로 하게 되고, 배열의 경우 같은 데이터 타입을 갖는 값들을 갖게 됩니다.
'var'로 선언한 것과 'let'으로 선언한 것의 차이로는 var로 선언한 배열의 경우 그 값을 바꿀 수 있지만, let으로 선언한 경우에는 선언되어 있는 값들을 바꿀 수 없다는 점이 특징입니다.
#값 추가
배열에 값을 넣고 싶다면,
print(array1) // []
array1.append(1)
print(array1) // [1]
array1.insert(2, at:0)
print(array1) // [2, 1]
위의 형식으로 값을 넣어주면 됩니다.
#값 제거
넣는 것과 마찬가지로, 값을 제거 해줄 때는
print(array1) // [2, 1]
array1.removeFirst()
print(array1) // [1]
array1.remove(at:0)
print(array1) // []
위와 같이 진행해주면 됩니다.
2. Dictionary
Dictionary는 key 와 value라고 불리는 쌍으로 이루어진 형식으로 생각하면 됩니다.
ex) [key1:value1, key2:value2, key3:value3.....]
Dictionary의 특징으로는 key의 값이 중복되면 안 된다는 점이 있고, 이 말은 곧 key의 값으로 값들을 식별한다는 것입니다.
key 값으로 value 값을 찾아낸다는 것이죠!
python에서는 Dictionary가 들어오는 값들의 타입에 영향을 받지 않고 모든 데이터 타입이 들어올 수 있지만,
swift의 경우에는 언어의 safety를 굉장히 강조하기 때문에, 정해진 타입으로 key와 value의 데이터 타입이 정해집니다.
이외의 타입이 들어오게 된다면, 바로 에러가 나게 되죠.
var dictionary1:[String:Int] = [:]
위와 같이 dictionary1을 정의해 주었다면, key의 데이터 타입은 String이 되고, value의 값에는 Int값만 들어올 수 있게 됩니다.
#값 추가
딕셔너리에 값을 추가하려면
print(dictionary1.isEmpty()) // true
dictionary1["first"] = 1
print(dictionary1.isEmpty()) // false
print(dictionary1["first"]) // 1
.isEmpty() 메서드를 활용해서 현재 dictionary1이 비어있는 상태인지 아닌지를 Boolean 값으로 확인할 수도 있습니다.
#값 제거
print(dictionary1.isEmpty()) // false
print(dictionary1.removeValue(forKey: "first")) // 1
print(dictionary1.isEmpty()) // true
key의 값을 활용해 dictionary1에서 값을 뺄 수도 있습니다.
3. Set
set의 경우에는 타입들을 데이터 순서와 상관없이 저장해주는 컬렉션 타입입니다.
무슨 말인지 모르시겠다고요?
Array의 경우에는 [1,1,1,1,2,3] 처럼 1이 중복되는 값이어도 문제가 되지 않습니다.
But! Set의 경우에는 [1,1,1,1,2,3]이 1이 중복되기에 set이 될 수 없고, [1,2,3]과 같은 중복이 없는 경우를 받아들이게 되는 것입니다.
# set 선언
var set1:Set<String> = ["first", "second"]
위에서 Array와 Dictionary의 선언과는 살짝 다르게 "Set<데이터타입>"의 꼴로 컬렉션의 타입을 지정해주게 됩니다.
# 값 추가
print(set1.count) // 2
set1.insert("third")
print(set1) // ["first", "second", "third"]
print(set1.count) // 3
위에서와 같이 insert() 메서드를 이용해 추가해줄 데이터 타입을 고려해 값을 넣어주면 된다.
새로운 키워드 .count 가 나왔는데, 이는 이 set1에 데이터가 몇 개가 있는지를 return 해주는 메서드이다.
count는 비단 set 뿐만 아니라, array, dictionary에서도 쓰일 수 있다.
# 값 제거
print(set1.count) // 3
set1.remove("first")
print(set1.count) // 2
코드만 간단하게 봐도 이해가 되니 참 쉽죠??
Set의 경우에는 배열같이 선언되어 있는 부분의 순서가 중요하지 않고, 중복된 값이 절대로 존재 하지 않습니다.
만약 같은 값을 넣으려고 한다면, 오류가 바로! 생성될 것입니다.
Set의 경우에는 그 값들이 유일하기 때문에 논리 연산자처럼 다른 Set과 합집합(union), 교집합(intersection), 차집합(disjoint)들과 같은 집합의 연산도 가능하다!
##정리
오늘은 컬렉션이라고 불리는 Array, Dictionary, Set을 공부해 보았고, 각각의 컬렉션 타입에서의 값을 넣는 방법과 제거하는 방법을 정리해보았습니다.
간추려서 정리하다보니, 부족한 부분이 많은데요, 추가로 더 궁금한 점이 있다면 애플 공식문서를 보시는 것! 추천드립니다!
여기까지 봐주신 여러분 감사합니다🙌
'iOS' 카테고리의 다른 글
어플은 몇개의 CPU 코어에서 실행되나요? (2) | 2023.09.25 |
---|---|
protocol 이럴때 사용해보세요 (0) | 2022.12.27 |
변수앞에 static이랑 class가 붙었는데요?(static 변수, class 변수) (0) | 2022.08.27 |
CocoaPod 사용하기 (0) | 2022.08.08 |