Swift: Collection Type / Array / Dictionary / Set

Wooyo·2023년 9월 25일
0
post-thumbnail

스위프트 컬렉션 타입

  • Array
  • Dictionary
  • Set

Array

  • 순서가 있는 리스트 컬렉션
  • 빈 Int Array 생성 표현
var integers: Array<Int> = Array<Int>()
var integers: Array<Int> = []
var integers: [Int] = Array<Int>()
var integers: [Int] = [Int]()
var integers: [Int] = []
var integers = [Int]()
  • 내부 메서드 사용 표현
integers.append(1)
integers.append(100)

// Int 타입이 아니므로 Array에 추가할 수 없습니다
//integers.append(101.1)

print(integers) // [1, 100]

// 멤버 포함 여부 확인
print(integers.contains(100)) // true
print(integers.contains(99)) // false

// 멤버 교체
integers[0] = 99

// 멤버 삭제
integers.remove(at: 0)
integers.removeLast()
integers.removeAll()

// 멤버 수 확인
print(integers.count)

// 인덱스를 벗어나 접근하려면 익셉션 런타임 오류발생
//integers[0]
  • let 선언시 불변 array
let immutableArray = [1, 2, 3]

// 수정이 불가능한 Array이므로 멤버를 추가하거나 삭제할 수 없습니다
//immutableArray.append(4)
//immutableArray.removeAll()

Dictionary

  • 키와 값의 쌍으로 이루어진 컬렉션
  • 키가 String / value가 Any인 빈 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] = [:]
var anyDictionary = [String: Any]()
  • Dictionary 활용 메서드
// 키에 해당하는 값 할당
anyDictionary["someKey"] = "value"
anyDictionary["anotherKey"] = 100

print(anyDictionary) // ["someKey": "value", "anotherKey": 100]

// 키에 해당하는 값 변경
anyDictionary["someKey"] = "dictionary"
print(anyDictionary) // ["someKey": "dictionary", "anotherKey": 100]

// 키에 해당하는 값 제거
anyDictionary.removeValue(forKey: "anotherKey")
anyDictionary["someKey"] = nil
print(anyDictionary)
  • let을 사용하면 불변 Dictionary
let emptyDictionary: [String: String] = [:]
let initalizedDictionary: [String: String] = ["name": "hi", "gender": "male"]

// 불변 Dictionary이므로 값 변경 불가
//emptyDictionary["key"] = "value"
  • 키에 해당하는 값을 다른 변수나 상수에 할당하고자 할때 옵셔널 / 타입 캐스팅
// "name"이라는 키에 해당하는 값이 없을 수 있으므로 
// String 타입의 값이 나올 것이라는 보장이 없습니다.
// 컴파일 오류가 발생합니다
let someValue: String = initalizedDictionary["name"]

Set

  • 순서가 없고 멤버가 유일한 컬렉션
  • 다른 생성 방법이 없음
  • 빈 Int Set 생성
var integerSet: Set<Int> = Set<Int>()
  • 내부 메서드
integerSet.insert(1)
integerSet.insert(100)
integerSet.insert(99)
integerSet.insert(99)
integerSet.insert(99)

print(integerSet) // [100, 99, 1]
print(integerSet.contains(1)) // true
print(integerSet.contains(2)) // false

integerSet.remove(100)
integerSet.removeFirst()

print(integerSet.count) // 1
  • 집합 연산에 많이 활용
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)

print(union) // [2, 4, 5, 6, 7, 3, 1]


// 합집합 오름차순 정렬
let sortedUnion: [Int] = union.sorted()

print(sortedUnion) // [1, 2, 3, 4, 5, 6, 7]


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

print(intersection) // [5, 3, 4]


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

print(subtracting) // [2, 1]
profile
Wooyo의 개발 블로그

0개의 댓글