Swift 자료구조 기본 – Array, Dictionary, Set 비교와 사용법
Swift를 배우기 시작하면 자주 마주치는 개념 중 하나가 컬렉션 타입(Collection Type)이다. 컬렉션이란 말 그대로 "여러 데이터를 모아서 담는 그릇"이라고 생각하면 된다. Swift에서는 대표적으로 Array(배열), Dictionary(딕셔너리), Set(집합) 이렇게 세 가지의 컬렉션 타입이 자주 사용된다.
사실, CS50을 사전에 공부한 덕분에 관련 내용이 상당히 수월했다(: 무쪼록 오늘은, 위 세 가지 컬렉션 타입- 각각의 특징과 실제 사용 예제를 통해 어떤 상황에서 어떤 컬렉션을 쓰면 좋을지 정리해 보고자 한다🥰.
+ Swift 컬렉션 타입 정복하기 – Array, Dictionary, Set 정리
1. Array – 순서가 있는 리스트
Array란?
Array는 가장 기본적인 컬렉션 타입이다. 간단히 말해서 순서가 있는 데이터의 목록이라고 할 수 있다. 데이터는 중복될 수도 있고, 인덱스를 통해 각각의 항목에 접근할 수 있다.
var fruits: [String] = ["사과", "바나나", "딸기"]
print(fruits[0]) // "사과"
여기서 fruits[0]은 배열의 첫 번째 요소를 의미한다. Swift에서 배열의 인덱스는 0부터 시작하므로 주의하자.
ex.
영어 알파벳 소문자 목록을 저장하고 싶다면?
let alphabet: [Character] = ["a", "b", "c", "d", "e", "f", "g", ..., "z"]
알파벳은 바뀌지 않는 고정된 값이므로 let을 사용하여 상수로 선언하는 것이 좋다.
주요 기능
var numbers: [Int] = []
numbers.append(1) // [1]
numbers.append(100) // [1, 100]
numbers.contains(100) // true
numbers[0] = 99 // [99, 100]
numbers.remove(at: 0) // [100]
numbers.removeAll() // []
배열은 순서를 유지하기 때문에 특정 위치에 접근하거나, 그 순서를 기준으로 작업하기 좋은 구조다. 예를 들어, 게임 랭킹, 오늘 할 일 목록 등은 Array로 관리하는 것이 적절하다.
2. Dictionary – 키와 값의 쌍
Dictionary란?
Dictionary는 키(key)와 값(value)이 짝을 이루는 컬렉션이다. 키를 통해 값을 찾고, 저장하고, 삭제할 수 있다. 이름표가 붙은 상자처럼 생각하면 이해가 쉽다.
var person: [String: String] = [
"이름": "지민",
"직업": "iOS 개발자"
]
ex.
책 제목과 저자를 저장하고 싶다면? 책의 제목이 고유한 키가 되고, 저자가 값이 될 수 있다.
var books: [String: String] = [
"어린왕자": "생텍쥐페리",
"데미안": "헤르만 헤세"
]
이 컬렉션은 새로운 책이 추가되거나 변경될 수 있기 때문에 var로 선언하는 것이 유리하다.
주요 기능
var info: [String: Any] = [:]
info["이름"] = "철수"
info["나이"] = 25
info["이름"] = "영희" // 값 수정
info["나이"] = nil // 값 삭제
키가 중복될 수 없고, 값을 변경하거나 삭제하는 것도 간단하다. 키를 통해 원하는 값을 빠르게 찾아낼 수 있어, 이름과 전화번호처럼 키-값 쌍이 있는 데이터에 유용하다.
3. Set – 순서 없이, 중복 없는 컬렉션
Set란?
Set은 중복을 허용하지 않고, 순서도 없다. 수학에서 배웠던 "집합"과 동일한 개념이라고 생각하면 된다.
var uniqueNumbers: Set<Int> = [1, 2, 3, 1, 2]
print(uniqueNumbers) // [1, 2, 3]
같은 값을 아무리 많이 넣어도 중복 없이 하나만 저장된다는 점이 핵심이다.
ex.
Boostcamp iOS 수강생 명단을 관리할 때는 중복 없이 이름을 저장해야 하므로 Set이 적절하다.
var students: Set<String> = ["민수", "지우", "서준", "민수"]
print(students) // ["민수", "지우", "서준"]
주요 기능
var intSet: Set<Int> = []
intSet.insert(10)
intSet.insert(20)
intSet.insert(10) // 중복 무시
intSet.contains(20) // true
intSet.remove(10)
또한 Set은 수학적인 집합 연산도 아주 쉽게 처리할 수 있다.
let a: Set<Int> = [1, 2, 3]
let b: Set<Int> = [3, 4, 5]
a.union(b) // 합집합: [1, 2, 3, 4, 5]
a.intersection(b) // 교집합: [3]
a.subtracting(b) // 차집합: [1, 2]
언제 어떤 컬렉션을 써야 할까?
상황 적절한 컬렉션 상수/변수
영어 알파벳 소문자 | Array | let (불변) |
책 제목과 저자 정리 | Dictionary | var (수시로 추가/삭제 가능) |
Boostcamp 수강생 명단 | Set | var (중복 없이 추가/삭제) |
컬렉션을 선택할 때 중요한 기준은 다음과 같다:
- 순서가 중요한가? → Array
- 이름표처럼 연결된 정보인가? → Dictionary
- 중복 없이 저장해야 하는가? → Set
이 기준만 잘 기억해도 상황에 맞는 타입을 쉽게 선택할 수 있다:)
'IT' 카테고리의 다른 글
if, switch, for-in, while: Swift에서 흐름을 다루는 방법 (0) | 2025.04.24 |
---|---|
Swift 함수 문법: 매개변수, 반환값, 함수 타입까지 (0) | 2025.04.23 |
한눈에 이해하는 Swift Any, AnyObject, nil 차이와 예제 (0) | 2025.04.20 |
Swift 입문자를 위한 기초 문법 완벽 정리 (with 예제 & 꿀팁) (0) | 2025.04.16 |
스택, 큐, 딕셔너리 — 알고리즘 문제 해결의 기본기 (0) | 2025.04.15 |
댓글
이 글 공유하기
다른 글
-
if, switch, for-in, while: Swift에서 흐름을 다루는 방법
if, switch, for-in, while: Swift에서 흐름을 다루는 방법
2025.04.24 -
Swift 함수 문법: 매개변수, 반환값, 함수 타입까지
Swift 함수 문법: 매개변수, 반환값, 함수 타입까지
2025.04.23 -
한눈에 이해하는 Swift Any, AnyObject, nil 차이와 예제
한눈에 이해하는 Swift Any, AnyObject, nil 차이와 예제
2025.04.20 -
Swift 입문자를 위한 기초 문법 완벽 정리 (with 예제 & 꿀팁)
Swift 입문자를 위한 기초 문법 완벽 정리 (with 예제 & 꿀팁)
2025.04.16