언어(Programming Language)/Swift

[Swift] 컬렉션(Array, Dictionary, Set) 개념 및 사용법

RyanSin 2021. 6. 1. 11:28
반응형

- 지난 시간

안녕하세요. 지난 시간에는 조건문에 대해 알아봤습니다.

 

혹시 놓치고 오신 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습니다.

[Swift] 조건문 (if문 & switch/case문)

 

[Swift] 조건문 (if문 & switch/case문)

- 지난 시간 안녕하세요. 지난 시간에는 "자료형, 변수, 상수" 개념 및 사용법에 대해 알아봤습니다. 혹시 위 개념을 이해하지 못 하신 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습

any-ting.tistory.com

 

- 개요

이번 시간에는 Swift에서 많이 사용하는 컬렉션 타입에 대해 알아보겠습니다.

 

컬렉션 타입으로는 Array, Dictionary, Set이 있습니다.

 

*Array

Array는 순서가 있는 리스트 컬렉션입니다.

 

값을 저장할 때 순서대로 저장되며, 해당 값을 찾을 때 해당 순번(인덱스)을 통해 값을 찾을 수 있습니다. 

 

1. Array 생성 및 사용법

var numbers: Array<Int> = Array<Int>()

//위와 동일하지만 다른 방식에 선언방법
var numbers: Array<Int> = [Int]()
var numbers: Array<Int> = []
var numbers: [Int] = Array<Int>()
var numbers: [Int] = [Int]()
var numbers: [Int] = []
var numbers = [Int]()

2. 사용법

    - 데이터 추가

var numbers: Array<Int> = Array<Int>()

//데이터 추가
numbers.append(1)
numbers.append(2)
numbers.append(3)

print(numbers)

//실행 결과
[1, 2, 3]

//우리는 Int형 데이터를 설정했기 때문에 다른 타입은 허용이 안된다.
//다른 타입에 데이터를 추가하면 컴파일 에러가 난다.
numbers.append(0.5) //컴파일 에러

 

    - 데이터 체크 및 조회

var numbers: Array<Int> = Array<Int>()

numbers.append(1)
numbers.append(2)
numbers.append(3)

//데이터 존재 여부 체크
var isCheck = numbers.contains(1) // true

print(isCheck)

//실행 결과
true

//데이터 조회
//Array 컬렉션 순서는 0번 부터 시작된다.
//위 1, 2, 3에 값을 추가 했다면 순서는 0, 1, 2 입니다.
var getNumber = numbers[0] // 1

print(getNumber)

//실행 결과
1

    - 데이터 수정

var numbers: Array<Int> = Array<Int>()

numbers.append(1)
numbers.append(2)
numbers.append(3)

//0번째 데이터 값을 10으로 수정
numbers[0] = 10

print(numbers)

//실행 결과
[10, 2, 3]

    - 데이터 삭제

var numbers: Array<Int> = Array<Int>()

numbers.append(1)
numbers.append(2)
numbers.append(3)

numbers[0] = 10

//데이터 삭제

numbers.remove(at:0) // 10 삭제
print(numbers)

// 실행 결과
[2, 3]

numbers.removeLast() // 컬렉션에 마지막 값 삭제 (값 2 삭제)
print(numbers)

//실행 결과
[2]

numbers.removeAll() // 모두 삭제
print(numbers)

//실행 결과
[]

//컬렉션 크기 조회 count 맴버 호출
print(numbers.count)

 

*Dictionary

Dictionary는 '키'와 '값'의 쌍으로 이루어진 컬렉션 타입입니다. 키와 값에는 어떤 데이터를 넣을지 타입을 설정합니다.

 

1. Dictionary 생성 및 사용법

var anyDictionary : Dictionary<String, Any> = [String : Any]()

// 위와 동일하지만 다른 방식에 선언방법
var anyDictionary : Dictionary<String, Any> = Dictionary<String, Any>()
var anyDictionary : Dictionary<String, Any> = [:]
var anyDictionary : [String : Any] = Dictionary<String, Any>()
var anyDictionary : [String : Any] = [String : Any]()
var anyDictionary = [String : Any]()

 2. 사용법

    - 데이터 추가

var anyDictionary : Dictionary<String, Any> = [String : Any]()

//동일 하지만 다른 방식에 데이터 추가
anyDictionary["이름"] = "개발이 취미인 사람"
anyDictionary["나이"] = 24

anyDictionary = ["이름": "개발이 취미인 사람","나이": 24]

print(anyDictionary)

//실행 결과
["이름": "개발이 취미인 사람", "나이": 24]

    - 데이터 조회

var anyDictionary : Dictionary<String, Any> = [String : Any]()

anyDictionary["이름"] = "개발이 취미인 사람"
anyDictionary["나이"] = 24

//해당 키 값을 통해 데이터 조회
print("이름은 : \(anyDictionary["이름"]!)")
print("나이는 : \(anyDictionary["나이"]!)")

//실행 결과
이름은 : 개발이 취미인 사람
나이는 : 24

anyDictionary는 Optional 상태 이기 때문에 강제 추출을 통해 값을 추출한다.

 

    - 데이터 수정

var anyDictionary : Dictionary<String, Any> = [String : Any]()

anyDictionary["이름"] = "개발이 취미인 사람"
anyDictionary["나이"] = 24

anyDictionary["이름"] = "오늘도 개발 화이팅"

print(anyDictionary)

//실행 결과
["이름": "오늘도 개발 화이팅", "나이": 24]

    - 데이터 삭제

var anyDictionary : Dictionary<String, Any> = [String : Any]()

anyDictionary["이름"] = "개발이 취미인 사람"
anyDictionary["나이"] = 24

// 키에 해당하는 값 제거
anyDictionary.removeValue(forKey:"이름")
print("값 : \(anyDictionary)")
//실행 결과
값 : ["나이": 24]

anyDictionary["나이"] = nil
print("값 : \(anyDictionary)")
//실행 결과
값 : [:]

*Set

순서가 없으며, 값이 중복되면 기본에 값을 덮어 씌어 처리한다.

 

1. Set 생성 및 사용법

var integerSet : Set<Int> = Set<Int>()

2. 사용법

    - 데이터 추가

var integerSet : Set<Int> = Set<Int>()

// 데이터 추가
integerSet.insert(1)
integerSet.insert(2)
integerSet.insert(99)
integerSet.insert(3)
integerSet.insert(99) // 중복되는 값 값이 반영되지 않음

 

    - 데이터 체크 및 조회

var integerSet : Set<Int> = Set<Int>()

// 데이터 추가
integerSet.insert(1)
integerSet.insert(2)
integerSet.insert(99)
integerSet.insert(3)

//데이터 존재 여부 체크
integerSet.contains(1) // true
integerSet.contains(100) // false

//데이터 조회
for data in integerSet {
	print(data)
}
//실행 결과
3
99
1
2

Set은 특정 값을 조회 할 수 없으며 반복문을 통해 접근해서 데이터를 찾을 수 있습니다.

 

    - 삭제

var integerSet : Set<Int> = Set<Int>()

// 데이터 추가
integerSet.insert(1)
integerSet.insert(2)
integerSet.insert(99)
integerSet.insert(3)

//데이터 삭제
integerSet.remove(1) // {2, 3, 99}

//첫번째 데이터 삭제
integerSet.removeFirst() // {3, 99}

//크기 조회
print(integerSet.count) // 2

- 집합 사용

Set은 값에 대해서 유일성을 보장하기 때문에 집합 연산을 하기 좋다.

let setA : Set<Int> = [1, 2, 3, 4, 5]
let setB : Set<Int> = [3, 4, 5, 6, 7]

// 합집합
let union : Set<Int> = setA.union(setB)
// 오름차순 정렬
let orderedUnion : [Int] = union.sorted()

// 교집합
let intersection : Set<Int> = setA.intersection(setB)

// 차집합
let subtracting : Set<Int> = setA.subtracting(setB)

 

이번 시간에는 Swift에서 사용되는 컬렉션 타입에 대해 알아봤습니다.

 

꼭 실습을 하시는 걸 추천드리겠습니다. :)