Swift - 컬렉션 타입(Collection Type) - Array, Dictionary, Set

2022. 9. 15. 11:30·Study/Swift
728x90
반응형

개인적으로 여러 언어를 접하면서 가장 표현법이 다양해서 헷갈리는 친구들이다.

 

1. Array (배열)

Swift에서 배열을 선언하는 문장을 본 첫 느낌은 Kotlin에서의 ArrayList같다는 느낌을 가장 먼저 받았다.

 

그런데 여기에 배열을 한 스푼추가한... 그런 느낌? <>를 쓰다가도 []를 쓰고 뭔가 어색했다.

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

//var integers: Array<Int> = [Int]()
//var integers: Array<Int> = []
//var integers: [Int] = Array<Int>()
//var integers: [Int] = [Int]()
//var integers: [Int] = []
//var integers = [Int]()

//위의 주석들이 Array를 선언하는 다른 방법들이다.
//내 예상보다 너무 많았다.

 

또, ArrayList같다고 했던 이유 중 이런 이유도 있었다.

integers.append(1) //멤버 추가
integers.append(100)

print(integers) //멤버들 출력

print(integers.contains(11)) //멤버 포함 여부 - false

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

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

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

let immutableArray = [1, 2, 3] //불변 Array는 let 키워드를 통해 생성

보다시피 var 키워드를 통해 만든 Array는 멤버를 추가, 삭제, 교체가 가능했는데 let 키워드를 통해 만든 Array는 불가능했다.

 

원래 C, Java, Kotlin을 배워본 사람으로서 Array의 길이가 가변적인 것이 조금 당황스러웠다.

 

2. Dictionary

key와 value의 쌍으로 이루어진 컬렉션 타입이다.

 

이 녀석도 얼핏 보니 Java, Kotlin에서 사용하던 Map방식과 비슷하다고 생각이 들었다.

var anyDict: Dictionary<String, Any> = [String: Any]() //key의 자료형은 String, value의 자료형은 Any인 Dictionary

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

//위의 주석들은 Dictionary를 생성하는 다른 방법들이다

anyDict["firstKey"] = "value" //키에 해당하는 값 할당
anyDict["secondKey"] = 10

print(anyDict) //anyDict의 key, value 쌍을 모두 출력 (아까봤던 Array처럼)

anyDict["firstKey"] = "dictionary" //키에 해당하는 값 변경

anyDict.removeValue(forKey: "firstKey")
anyDict["secondKey"] = nil

let emptyDict: [String: String] = [:]
let initalizedDict: [String: String] = ["name": "kim", "gender": "male"]
//두 Dictionary 모두 값 변경 불가

//let someValue: String = initalizedDictionary["name"]
//위에서 분명 name이란 key에 kim이라는 value를 할당했지만 없을수도 있다고 컴파일러가 판단해 컴파일 에러가 발생한다

 

3. Set

중복되지 않은 멤버가 순서없이 존재하는 컬렉션이다.

 

Array, Dictionary와 다르게 축약형으로 선언할 수 없다.

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

integerSet.insert(1) //멤버 추가
integerSet.insert(99)
integerSet.insert(99) //같은 멤버를 추가해도 더 이상 추가되지 않는다
integerSet.insert(100)

print(integerSet) //모든 멤버 출력

//Array에서처럼 contains, remove 함수가 제공된다
//integerSet.count는 총 멤버 수를 의미한다

//멤버의 유일성이 보장되기에 집합 연산에 사용 시 유용하다고 한다
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() //합집합 오름차순 정렬
//자료형을 보면 Int형 배열이다
print(sortedUnion) //[1, 2, 3, 4, 5, 6, 7]

let intersection: Set<Int> = setA.intersection(setB) //교집합
print(intersection) //[5, 3, 4]

let subtracting: Set<Int> = setA.subtracting(setB) //차집합
print(subtracting) //[2, 1]
728x90
반응형
저작자표시 (새창열림)

'Study > Swift' 카테고리의 다른 글

Swift - 함수 고급  (0) 2022.09.17
Swift - 함수 기본  (0) 2022.09.16
Swift - Any, AnyObject, nil  (0) 2022.09.14
Swift - 기본 데이터 타입  (0) 2022.09.13
Swift - 변수, 상수  (0) 2022.09.12
'Study/Swift' 카테고리의 다른 글
  • Swift - 함수 고급
  • Swift - 함수 기본
  • Swift - Any, AnyObject, nil
  • Swift - 기본 데이터 타입
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (237)
      • Dev experience (85)
        • Android (84)
        • Kotlin (1)
      • Study (62)
        • Kotlin (26)
        • Swift (17)
        • Java (19)
      • 프로그래머스 (68)
      • 주저리주저리 (22)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 전시회 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    PCCE
    코루틴
    오블완
    프로그래머스
    LiveData
    Kotlin
    자바
    getNumericValue
    SWIFT
    코틀린
    android
    room
    MVVM
    coroutines
    안드로이드
    CodeLab
    viewModelScope
    Java
    databinding
    jetpack
    programmers
    배열
    ViewModel
    aac
    daterangepicker
    스위프트
    티스토리챌린지
    ios
    Material
    Observer
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
Swift - 컬렉션 타입(Collection Type) - Array, Dictionary, Set
상단으로

티스토리툴바