스위프트 문법 - 컬렉션 타입

응애개발자·2023년 2월 3일
0

스위프트

목록 보기
6/8

컬렉션 타입(Collection Type)

컬렉션 타입이란 말그대로 데이터 집합의 종류 정도로 볼 수 있다.
Swift에서는 한가지로 지정된 자료형을 갖는 값들의 집합을 의미한다.
여기에는 Array, Set, Dictionary 세가지가 있다.

Array(배열, 어레이) : 같은 자료형의 데이터들이 순서를 유지하며 저장되는 타입
Set(집합, 세트) : 같은 자료형의 중복이 없는 데이터들이 정해진 순서없이 저장되는 타입
Dictionary(사전, 딕셔너리) : 배열과 유사하지만 순서를 없앤 대신 키(key)값으로 데이터를 조회할 수있는 타입

Array(배열)

선언 방법

//기본적인 선언
var arr1: Array<Int> = []
var arr1: [Int] = []
var arr1: Array = [1, 2, 3, 4]
var arr1 = [1, 2, 3, 4]

//특정 값을 반복해서 넣으며 크기를 정해서 생성하고 싶으면
var arr1 = Array(repeating: 0, count:3) // [0, 0, 0]
var arr2 = Array(repeating: 2, count:5) // [2, 2, 2, 2, 2]
var newarr = arr1 + arr2
//[0, 0, 0, 2, 2, 2, 2, 2]

count로 크기 조회 가능하다.
isEmpty로 비어있는지 확인 가능하다.(bool형 리턴)

추가

var arr1: [Int] = [1]
arr1.append(4)//[1, 4]
arr3.append("아아아")//String형 배열의 경우

arr1.insert(5, at: 0)//[5, 1, 4] 참고로 인덱스는 원래 배열의 크기-1까지만 쓸 수 있다.

삭제

remove() 함수는 해당 값을 반환한다. 따라서 아래처럼 값을 저장할 수도 있다.

var valueofarr1end = arr1.remove(at: 1)

Set(집합)

Set 자료형은 값을 저장할 때 해시값을 사용한다. 따라서 직접 커스텀 자료형을 만들어서 Set에 저장하려면 Swift 표준 라이브러리의 Hashable Protocol을 확장해서 사용해야 한다.(Dictionary 자료형의 key에도 해당한다.)
count로 크기 조회 가능하다.
isEmpty로 비어있는지 확인 가능하다.(bool형 리턴)

선언

var set1 = Set<Int>()
var set1: Set<Int> = [1, 2]
var set1: Set = [1, 2]//타입 추론덕에 데이터의 자료형 생략 가능

추가

var set1.insert("a")//String 타입일 경우

삭제

var removed_data = set1.remove(데이터값)//데이터를 반환한다.

데이터 확인

if favoriteGenres.contains("Funk") {
    print("I get up on the good foot.")
} else {
    print("It's too funky in here.")
}
// It's too funky in here.
//출처 애플 스위프트 공식문서

Set 연산종류

let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]

oddDigits.union(evenDigits).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersection(evenDigits).sorted()
// []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]
oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]

출처 애플 스위프트 공식문서

Dictionary(딕셔너리; 사전)

키와 값으로 이루어진 순서없는 자료형
count로 크기 조회 가능하다.
isEmpty로 비어있는지 확인 가능하다.(bool형 리턴)

선언

var dummydictionary: [Int: String] = [:]//비어있는 딕셔너리 선언
var countrys: [String: String] = ["Korea": "Busan", "Japan": "Tokyo"]

수정

딕셔너리의 value는 key를 통해 접근 및 수정할 수 있다.

countrys["Korea"] = "Seoul"
//updateValue함수도 있는데 값이 바뀌면 기존값을 리턴한다.
var olddata = countrys.updateValue("Osaka", forKey:"Japan")

제거

key와 value쌍을 제거하는 방법은 두가지다.

countrys["Japan"] = nil//직접 제거해버리거나
var deleted_data = countrys.removeValue(forKey: "Japan")
//밑의 removeValue함수를 쓰면 삭제된 값이 리턴된다.

기타

이런것도 가능하다.

var country_name = [String](countrys.keys)
var country_capital = [String](countrys.values)

0개의 댓글