본문 바로가기
iOS

Collection이 뭔가요?(Array, Dictionary, Set)

by 지금갑시다 2022. 5. 19.

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을 공부해 보았고, 각각의 컬렉션 타입에서의 값을 넣는 방법과 제거하는 방법을 정리해보았습니다.

간추려서 정리하다보니, 부족한 부분이 많은데요, 추가로 더 궁금한 점이 있다면 애플 공식문서를 보시는 것! 추천드립니다!

 

여기까지 봐주신 여러분 감사합니다🙌

 

https://developer.apple.com/documentation/swift/collection