DEV - iOS/iOS

[Swift] 스위프트 기본 문법 공부(4) - Set & Dictionary

베이비코더 2022. 2. 9. 16:35
반응형

Set

Set 타입 또한 Array처럼 여러 개의 값을 저장하지만,

순서와 중복 없이 값을 저장한다는 차이점이 있다.

// Set type 변수 선언 & 초기화 방법 1
var names = Set<String>() 
names.insert("baby")
names.insert("coder")
names.insert("baby")

// Set type 변수 선언 & 초기화 방법 2
var names2: Set = ["name1", "name2", "name2", "name2"]

Array와 유사하게 선언한다.

첫 번째 선언 방법으로는 insert()를 사용해서 값을 대입한다.

"baby"라는 값은 중복되기 때문에 names에 마지막으로 삽입한 "baby" 삽입되지 않게 된다.

결과적으로 names에는 "baby" , "coder" 두 개의 값만 삽입된다.

 

마찬가지로 두 번째 선언 방법으로는 "name1", "name2" 두 개의 값만 삽입된다.

// Set 연산
var setTestNum1: Set = [1, 2, 3, 4, 5]
var setTestNum2: Set = [3, 4, 5, 6, 7]

// 합집합
setTestNum1.union(setTestNum2)
// 결과 : {3, 2, 5, 4, 7, 1, 6}

// 교집합
setTestNum1.intersection(setTestNum2)
// 결과 : {5, 3, 4}

// 합집합 - 교집합 (대칭차집합)
setTestNum1.symmetricDifference(setTestNum2)
// 결과 : {7, 6, 1, 2}

// 여집합
setTestNum1.subtracting(setTestNum2)
// 결과 : {1, 2}

집합 연산을 위한 함수들이다.


Dictionary

Key와 Value로 구성이 되어있다.

Array는 0부터 순서대로 Index와 Value로 짝을 이룬다면,

Dictionary는 내가 임의로 이름을 붙일 수 있는 Key와 Value로 짝을 이루고 순서가 없다는 차이가 있다.

// Dictionary Type 선언
var cafeMenu = [String : Int]()

// 타입을 지정하지 않을 때 선언
// var cafeMenu = [String : Any]()

cafeMenu["아메리카노"] = 1500
cafeMenu["아이스아메리카노"] = 2000
cafeMenu["카페라떼"] = 2500

[Key Type : Value Type]

대괄호 안에 콜론(:) 왼쪽으로는 Key값의 타입을 지정하고,

콜론 오른쪽으로는 Value값의 타입을 지정하여 선언해준다.

타입을 지정하지 않고 String, Int 등등 여러 타입을 함께 써야되는 경우 Any를 넣어주면 된다.

var cafeMenu2 = ["아메리카노" : 1500, "아이스아메리카노" : 2000, "카페라떼" : 2500]

간결하게 선언과 동시에 값을 대입하는 방법도 있다.

반응형