컬렉션 데이터 타입

2023. 5. 4. 14:38Swift 이해/Swift 문법

저번 시간에는 기본 데이터 타입에 대해 배웠습니다.

이번시간엔 *컬렉션 데이터 타입 (Array,Dictionary,Set)에 대해 알아보겠습니다.

 

*컬렉션 데이터 타입 : 여러 값들을 묶어서 하나의 상수나 변수로 다룰 수 있도록 도와주는 타입

 

Array

순서(인덱스)가 있는 리스트 컬렉션 타입 , 배열이라고도 함

var ilan: Array<String> = ["Swift", "Objective-C", "Java"]

자료형은

: Array<자료형> 또는 [자료형] 

으로 표기합니다

 

값은 

[ ] 대괄호를 사용해 표기합니다

 

빈 Array 정의 방법은

var ilan: Array<String> = Array<String>()
var ilan2: [String] = []
var ilan3 = [String]()

이렇게 3가지 방법으로 가능합니다.

 

하지만 Array 타입도 마찬가지로 타입 추론으로 자료형을 명시하지 않아도 컴파일이 됩니다.

var ilan = ["Swift", "Objective-C", "Java"]

이렇게만 써줘도 Array<String>타입이란걸 알아서 인식하는거죠

 

이제 빈배열에 값들을 추가,확인,삭제 하는 함수를 알아보겠습니다.

//Int형 빈배열 생성
var iInt = [Int]() 

//배열에 값 추가
iInt.append(1)
iInt.append(2)
iInt.append(3)
iInt // Result : [1,2,3]

//배열의 값 개수
iInt.count // Result : 3

//배열의 값 확인
iInt.contains(1) // Result : true
iInt.contains(4) // Result : false

//배열의 값 삭제
iInt.remove(at: 0) // 0번 값 삭제 Result : [2,3]
iInt.removeLast() // 마지막 값 삭제 Result : [1,2]
iInt.removeAll() // 모든 값 삭제

 

참고로 배열은 0부터 시작하므로 

 

배열  0 1 2 

값     1 2 3 

 

이런식으로 값이 들어갑니다.

iInt[0] // Result : 1

따라서 0번째 값은 1이 됩니다.

 

Dictionary

키(key)와 값(value)의 쌍으로 이루어진 컬렉션 타입.

var icapital: Dictionary<String, String> = [
  "한국": "서울",
  "일본": "도쿄",
  "중국": "베이징",
]

자료형은

: Dictionary<자료형,자료형> 또는 [자료형:자료형] 

으로 표기합니다

 

값은

[ 키 : 값 ] 으로 표기합니다

 

빈 Dictionary 정의 방법은

var icapital: Dictionary<String, String> = [String: String]()
var icapital2: [String: String] = [:]
var icapital3 = [String: String]()

이렇게 3가지 방법으로 가능합니다.

 

하지만 Dictionary 타입도 마찬가지로 타입 추론으로 자료형을 명시하지 않아도 컴파일이 됩니다.

var icapital = [
  "한국": "서울",
  "일본": "오사카",
  "중국": "베이징",
]

이렇게만 써줘도 Dictionary<String,String> 타입이란걸 알아서 인식하는거죠

 

다음은 추가,수정,검색,삭제하는 방법입니다

// "프랑스 : 파리" 키와 값 추가
icapital ["프랑스"] = "파리" 

// 기존에 있던 "일본" 값 수정
icapital ["일본"] = "도쿄" 

// 한국의 수도 출력
icapital ["한국"] // Result : 서울

//키값 삭제
icapital.removeValue(forKey: "중국") // Result : 베이징 (결과 출력후 해당 키값 삭제)

 

 

Set

순서가 없고 멤버가 유일한 컬렉션 타입. 수학의 집합 개념

var iset: Set<Int> = [1,2,3,4]

자료형은

: Set<자료형> 

으로 표기합니다

 

값은

[ ] 대괄호를 사용해 표기합니다

 

빈 Set 정의 방법은

var iset1: Set<Int> = []
var iset2 = Set<Int>()

이렇게 2가지 방법이 있습니다.

 

Set타입은 Array,Dictionary와 달리 타입 추론이 불가합니다.

Array 선언 방법과 같기 때문에 Set을 정의해주지 않으면 Swift컴파일러는 Array로 인식하죠

 

Set을 선언하려면 반드시 자료형을 표기해 줍시다.

var iset: Set<Int> = [1,2,3,4]

//값 개수 확인
iset.count // Result : 4

//값 비었는지 확인
iset.isEmpty // Result : false

//값 있는지 확인
iset.contains(4) // Result : true
iset.contains(5) // Result : false

//값 추가 (이미 있으면 false, 없으면 true)
iset.insert(1) // Result : false
iset.insert(10) // Result : true

//값 삭제
iset.remove(1) 

//값 전체 삭제
iset.removeAll()

마지막으로 Set의 집합에 대해 알아보겠습니다.

 

 

var iset1: Set<Int> = [1,2,3,4,5]
var iset2: Set<Int> = [1,3,5,7,9]
var iset3: Set<Int> = [2,4,6,8,10]
 
// 1. intersection : 교집합
iset1.intersection(iset2)                     // [5, 1, 3]
iset2.intersection(iset3)                     // 겹치는 요소 없음
 
// 2. union : 합집합
iset1.union(iset2)                            // [1, 4, 5, 3, 7, 2, 9]
iset2.union(iset3)                            // [9, 3, 10, 4, 1, 8, 7, 2, 6, 5]
 
// 3. sysmetricDifference : 여집합
iset1.symmetricDifference(iset2)              // [9, 4, 2, 7]
iset2.symmetricDifference(iset3)              // [10, 9, 8, 6, 7, 1, 2, 4, 3, 5]
 
// 4. subtracting : 차집합
iset1.subtracting(iset2)                      // [2, 4]
iset2.subtracting(iset3)                      // [1, 7, 5, 9, 3]

 

이상 Swift 문법 이해하기 2편을 마치도록 하겠습니다.

'Swift 이해 > Swift 문법' 카테고리의 다른 글

[Swift] 프로퍼티 옵저버  (0) 2023.06.19
함수  (0) 2023.05.16
반복문  (0) 2023.05.14
조건문  (0) 2023.05.07
변수와 상수 , 자료형 , 기본 데이터 타입  (0) 2023.05.03