Swift

[Swift] 컬렉션형 : 배열, 딕셔너리, 세트

yevdev 2022. 3. 15. 13:16

Swift에서는 튜플 외에도 많은 수의 데이터를 묶어서 저장하고 관리할 수 있는 컬렉션 타입을 제공한다.

  1. 배열
  2. 딕셔너리
  3. 세트

1️⃣ 배열

var names: Array<String> = ["yejin", "chulsoo", "yonghee", "yejin"]

// Array<String> == [String]
var names: [String] = ["yejin", "chulsoo", "yonghee", "yejin"]

var emptyArray: [Any] = [Any]() //Any를 데이터 요소로 갖는 빈 배열을 생성
var emptyArray: [Any] = Array<Any>() // 위 선언과 같은 동작
var emptyArray: [Any] = [] // 배열과 타입을 명시해줬다면 []만으로도 빈 배열을 생성할 수 있다.

print(emptyArray.isEmpty)
print(names.count)


// true
// 4

 

➰ 배열에 사용되는 다양한 메서드와 프로퍼티

  • first, last : 배열의 맨 처음과 맨 마지막 요소를 가지고올 수 있다.
  • index(of:) : 요소의 인덱스를 알 수 있다. (만약 중복된 요소가 있다면 제일 먼저 발견되는 요소의 인덱스를 반환)
  • append(_:) : 맨 뒤에 요소를 추가할 수 있다.
  • insert(_:at:) : 중간에 요소 삽입
  • remove(_:) : 요소의 삭제
  • ["yejin","hi"]와 같은 여러개의 요소를 삽입 혹은 삭제하고 싶다면? contentsOf: ["yejin", "hi"] 로!

 

 

2️⃣ 딕셔너리

  • 키는 같은 이름을 중복해서 사용할 수 없다.
// typelias를 통해 좀 더 단순하게 표현할 수 있다.
typealias StringIntDictionary = [String: Int]

// 키는 String, 값은 Int 타입인 빈 딕셔너리를 생성
var numberForName: Dictionary<String, Int> = Dictionary<String, Int>()
// [String: Int] = Dictionary<String, Int>
// 딕셔너리와 키와 값 타입을 정확히 명시해 줬다면 [:] 만으로도 빈 딕셔너리를 생성할 수 있다.
var numberForName: [String: Int] = [:]

// 초기 값을 주어 생성하기
var numberForName: [String: Int] = ["yejin": 23]

 

➰ 딕셔너리에 사용되는 다양한 메서드

  • removeValue(forKey: "특정 키") : 특정 키에 해당하는 값을 제거 

❗️ 딕셔너리는 배열과 다르게 딕셔너리 내부에 없는 키로 접근해도 오류가 발생하지 않는다. 다만, nil을 반환할 뿐!

 

 

 

3️⃣ 세트

  • 세트 내의 값은 모두 유일한 값, 즉 중복된 값이 없어야 한다.
  • 세트의 요소로는 해시가능한 값이 들어와야 한다.
var names: Set<String> = Set<String>() // 빈 세트 생성
var names: Set<String> = [] // 빈 세트 생성

//Array와 마찬가지로 대괄호를 사용합니다.
var names: Set<String> = ["yejin", "hi", "hello", "yejin"]
//중복된 값이 있으므로 names.count 시, 3 출력

// 그렇기 때문에 타입 추론을 사용하게 되면 컴파일러는 Set가 아닌 Array로 타입을 저장한다.
var numbers = [100, 200, 300]
print(type(of: numbers)) // Array<Int>

 

➰ 세트의 다양한 매서드

  • insert(_:) : 세트에 요소 추가 시
  • remove(_:) : 세트에 요소 삭제 시, 해당 요소가 삭제된 후 반환
  • intersection : 교집합
  • symmetricDifference : 여집합
  • union : 합집합
  • subtracting : 차집합
  • sorted() : 정렬된 배열 반환
  • isDisjoint(with:) : 서로 배타적인지
  • isSubset(of:) : 부분 집합인지
  • isSuperset(of:) : 전체집합인지

 

 

4️⃣ 컬렉션에서 입의의 요소 추출과 뒤섞기

randomElements() : 임의의 요소 추출

suffle() : 임의로 요소 뒤섞기

 

 


Reference

Swift : 스위프트 프로그래밍 도서 - 야곰