Swift

[Swift] Collection Type?

Hatchling.dev 2023. 3. 5. 23:27

(편의상 편한 말투로 작성하는 점 이해 부탁드립니다.😅)

(부정확한 정보가 있을 수 있습니다. 지적 환영🤩)

 

오늘은 Swift의 Collection Type에는 어떤 것들이 있는지 알아보자!!

먼저, Collection Type이란 무엇인가?? 데이터들의 집합이다! (초간단)

 

Array (배열)

데이터 타입의 값들을 순서대로 저장하는 리스트

 

  • 선언 (아래 처럼 다양한 방법으로 배열을 만들 수 있다.)
var nameList: Array<String> = Array<String>()
var nameList: [String] = []
var nameList = [String]()
var nameList = ["Hatchling", "해츨링"]
var nameList = [String](repeating: "", count: 2)

 

  • 추가
var nameList = [String]()
nameList.append("해츨링") // 맨 뒤에 값을 추가한다.
print(nameList) // ["해츨링"]
nameList.insert("Hatchling", at: 0) // 특정 위치에 값을 추가한다.
print(nameList) // ["Hatchling", "해츨링"]

 

  • 변경
var nameList = ["Hatchling", "해"]
nameList[1] = "해츨링"
print(nameList) // ["Hatchling", "해츨링"]

 

  • 삭제
var nameList = ["Hatchling", "해츨링", "woo", "Park", "Kim", "Lee", "Jo", "Jung", "Hong"]
print(nameList) // ["Hatchling", "해츨링", "woo", "Park", "Kim", "Lee", "Jo", "Jung", "Hong"]

nameList.remove(at: 4) // 특정 위치 값 삭제
print(nameList) // ["Hatchling", "해츨링", "woo", "Park", "Lee", "Jo", "Jung", "Hong"]

nameList.removeFirst() // 첫 번째 값 삭제
print(nameList) // ["해츨링", "woo", "Park", "Lee", "Jo", "Jung", "Hong"]

nameList.removeFirst(2) // 첫 번째부터 n개의 값 삭제
print(nameList) // ["Park", "Lee", "Jo", "Jung", "Hong"]

nameList.removeLast() // 마지막 값 삭제
print(nameList) // ["Park", "Lee", "Jo", "Jung"]

nameList.removeLast(2) // 마지막부터 n개의 값 삭제
print(nameList) // ["Park", "Lee"]

nameList.removeAll() // 모든 값 삭제
print(nameList) // []

 

  • 조회
var nameList = ["Hatchling", "해츨링"]
print(nameList) // ["Hatchling", "해츨링"]
print(nameList[0]) // Hatchling

 

Dictionary

순서없이 키(Key)와 값(Value) 한 쌍으로 데이터를 저장하는 컬렉션 타입

 

  • 선언 (아래 처럼 다양한 방법으로 딕셔너리를 만들 수 있다.)
var ageList: Dictionary<String, Int> = Dictionary<String, Int>()
var ageList = [String: Int]()
var ageList: [String: Int] = [:]
var ageList = ["Hatchling": 20]

 

  • 추가 및 변경
var ageList = [String: Int]()
ageList["Hatchling"] = 20

 

  • 삭제
var ageList = ["Hatchling": 20, "해츨링": 30, "woo": 40]
ageList.remove(at: ageList.startIndex) // 순서가 없는 Dictionary의 특정 index를 삭제 (원하는 결과를 얻지 못할 수 있기 때문에 사용할 일이 있나 싶은...)
print(ageList) // ["woo": 40, "Hatchling": 20]

ageList.removeValue(forKey: "woo") // 특정 키 삭제
print(ageList) // ["Hatchling": 20]

ageList.removeAll() // 모든 데이터 삭제
print(ageList) // [:]

 

  • 조회
var ageList = ["Hatchling": 20, "해츨링": 30]
print(ageList) // ["Hatchling": 20, "해츨링": 30] 모든 키 값 조회
print(ageList["Hatchling"]) // Optional(20) 특정 키에 대한 값 조회 해당 키가 없을 경우 nil 반환
print(ageList.keys) // ["Hatchling", "해츨링"] 모든 키 조회
print(ageList.values) //[20, 30] 모든 값 조회

 

Set

같은 데이터 타입의 값을 순서없이 저장하는 리스트. 중복 데이터를 허용하지 않는다.

  • 선언 (아래 처럼 다양한 방법으로 세트를 만들 수 있다.)
var numberList: Set<Int> = Set()
var numberList: Set = Set<Int>()
var numberList: Set<Int> = []
var numberList: Set = [1, 2]
var numberList: Set<Int> = [1, 2]
var numberList = Set<Int>()

 

  • 추가 (변경 없음)
var numberList: Set<Int> = Set()
numberList.insert(1)
numberList.insert(2)
print(numberList) // [1, 2] 또는 [2, 1] 순서가 없다.

 

  • 삭제
var numberList: Set = [1, 2, 3, 4, 5]
numberList.remove(at: numberList.startIndex) // 특정 인덱스의 값을 삭제할 수 있지만 순서가 없기 때문에 항상 결과가 다를 수 있다는 점을 주의해야 한다.
print(numberList) // [1, 4, 3, 2]

numberList.removeFirst() // 첫 번째 값을 삭제할 수 있지만 위와 같은 이유로 주의해야 한다.
print(numberList) // [4, 3, 2]

numberList.remove(3) // 특정 값 삭제
print(numberList) // [4, 2]

numberList.removeAll() // 모든 값 삭제
print(numberList) // []

 

  • 조회
var numberList: Set = [1, 2, 3, 4, 5]
print(numberList) // [3, 5, 2, 4, 1]