Swift Array, Dictionary, Set

김윤홍·2024년 6월 9일
post-thumbnail

Array(배열)

배열은 동일한 타입의 요소들이 숫ㄴ서를 가진 리스트 형태의 컬렉션 타입이다

Array생성

let arr1: Array<String>
let arr2: Array<Character>

let arr3: [Int] = [] //빈 배열생성시 타입을 써줘야한다
var arr4: [String] = []

var arr5 = [1, 2, 3, 4, 5] //컴파일러가 타입 Int로 추론

Array 자주 사용하는 메서드

var arr = [1, 2, 3, 4, 5, 6]

//배열의 갯수 세기
var count = arr.count //6

//배열이 비어있는지 확인
var empty = arr.isEmpty //false

//배열 요소 접근
arr[0] // 1
arr[0...2] //[1, 2, 3]

//메소드로 접근
arr.first // Optional(1) 값이 없을수도 있기에 optional로 반환

// 배열에 요소 추가하기
arr.append(7)                            // [1, 2, 3, 4, 5, 6, 7]
arr.append(contentsOf: [8, 9])        // [1, 2, 3, 4, 5, 6, 7, 8, 9]
 
//inset : 중간에 추가
arr.insert(0, at: 0)                      // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arr.insert(contentsOf: [1, 11], at: 2)
//[0, 1, 1, 11, 2, 3, 4, 5, 6, 7, 8, 9]

var arr2 = [1, 2, 3, 4, 5, 6, 7]
//배열 삭제
arr2.remove(at: 2)   // [1, 2, 4, 5, 6, 7] 
arr2.removeFirst()   // [2, 4, 5, 6, 7] 
arr2.removeFirst(2) // [5, 6, 7]         
arr2.removeLast()   // [5, 6]       
arr2.popLast()      // [5]               
arr2.removeAll()    //[]

var arr1 = [1, 10 ,3 ,5 ,4]
arr1.sort() // [1, 3, 4, 5, 10]
arr1.sort(by: >) // [10, 5, 4, 3 ,1]
arr1.sorted() //원본을 그대로 두고 오름차순으로 반환

Set

Set은 순서를 정의하지 않고 동일한 타입의 값을 저장한다
Set는 중복을 허용하지 않고 해시를 통해 값을 저장하기 때문에 배열에 비해 검색속도가 빠르다!

Set 생성

var set1 = [1, 4, 5, 9, 2] //set이 아닌 배열로 인식 타입추론 불가

var set2: Set<Int> = []

var set3 = Set<Int>()

Set에서 자주사용하는 메서드

var num = Set<Int>()

num.insert(1) // [1]

num = [] // 초기화

var country: Set<String> = ["Korea", "Japan", "Austrailia"]

country.isEmpty // false
country.count // 3
country.contains("Korea") //true

num = [1,2,3,4,5,6]
num.remove(1) // 1 삭제된 요소를 리턴
num.remove(7) // nil 존재하지 않는 요소 삭제시 nil리턴

num.removeAll() // 전체삭제 

Dictionary(딕셔너리)

Dictionary는 순서를 정의하지 않고 같은 타입의 Key와 같은 타입의 value를 저장한다.
key는 중복될수 없고 같은 타입이여야한다
value는 같은 타입이여야한다

Dictionary생성

var dict: [String: Int] = [:]
dict = ["hong": 1, "kim": 2]

Dictionary 자주 사용하는 메서드

dict.keys // ["hong", "kim"]
dict.values // [1, 2]

dict.count // 2

var dictionary: [String: [String]] = [
    "fruits": ["apple", "banana"],
    "vegetables": ["carrot", "potato"]
]

// 특정 키의 배열에 요소 추가하기
let key = "fruits"
let newElement = "orange"

// 키가 존재할 때 배열에 요소를 추가
if var array = dictionary[key] {
    array.append(newElement)
    dictionary[key] = array
} else {
    // 키가 존재하지 않을 때 새로운 배열을 생성하여 추가
    dictionary[key] = [newElement]
}

print(dictionary)

0개의 댓글