티스토리 뷰

swift

[swift] Collection Type - Array

순진이 2021. 12. 8. 11:40

swift의 컬렉션 타입(Collection Type)에는 총 3개가 있쥬?

Array, Dictionary, Set이 되겠습니다.

 

오늘은 Array(배열)부터 차근 차근 알아가볼게유?

 


 

Array(배열)

 

 

 

말 그대로 "동일한 특성을 가지며 일정한 규칙에 따라 여러 요소가 나열되어 있는 데이터들의 집합"이라고 생각하면 됩니다.

// Array 예시
let names: String = ["Anna", "Alex", "Brian", "Jack", "Anna"]

 

 

 

같은 타입의 요소들만 담을 수 있구요,

배열 내의 요소들은 중복이 가능해요! (순서로 구별)

[ ](대괄호) 문법 (subscript)을 쓰며,

접근시에는 index로 접근을 합니다. 

index는 배열의 첫번째 요소부터 0, 1, 2, 3...으로 순서가 정해지는 값이라고 생각하면 됩니당. (zero-indexed)

옥께이!?

 

 

 

노노,,,저도 다 까먹었으니까,,, 차근차근 알아가보도록 하겠슴돠.

 

 

 

빈 배열 만들기

일단 빈 배열을 만드는 것은 매우 간단쓰! 

데이터가 있을 때는 [](대괄호) 안에 요소들을 싹다 때려넣으면 되구요,

없을 때는 아래처럼 빈 배열을 만들어주시면 됩니다요.

let emptyArray1: [Int] = []
let emptyArray2 = Array<Int>()
let emptyArray3: [Int] = Array<Int>()
let emptyArray4 = [Int]()

타입을 유추할 수 있다면, 굳이 타입을 써주지 않아도 되겠지만,

빈 배열에는 요소가 없으니, 타입 추론이 불가능하기 때문에 타입을 명시해주어야 해욧!

 

 

 

빈 배열에 요소 추가하기

빈 배열에 요소를 추가하려면 append라는 메서드를 사용하시면 됩니다.

var alphabet = ["A", "B", "C", "D"]

alphabet.append("b")
// ["A", "B", "C", "D", "b"]

 

1개 이상의 요소를 추가할 때는 append(contentsOf:)라는 메서드를 이용하면 되구요.

var alphabet = ["A", "B", "C", "D"]

alphabet.append(contentsOf: ["c", "d"])
// ["A", "B", "C", "D", "c", "d"]

 

그리고 기본 연산자를 가지고도 빈 배열에 추가할 수 있어요.

추가한 요소는 배열의 맨 마지막에 추가된답니다.

var alphabet = ["A", "B", "C", "D"]

alphabet += ["a"]
// ["A", "B", "C", "D", "a"]

 

 

배열에 요소 삽입하기

배열에 특정 요소를 넣는 일도 있겠져?

그럴 때는 insert(_:at:)메서드를 사용하면 되는데, 어떤 자리에 넣을지도 정해주어야 해요. 

at을 통해 삽입하려는 자리의 인덱스를 알려줘야 해요.

배열의 제일 앞에 추가하고 싶다면 index 0을, 제일 마지막에 추가하고 싶다면 index 4를 넣으면 되겠쥬?

(0, 1, 2, 3 순서로 인덱스 순서가 정해지니까여?)

 

 

append와 마찬가지로 요소 1개를 추가할 수도 있지만, 여러개를 추가할 수도 있습니다.

insert(contentsOf:at:)를 통해서 말이져.

var alphabet = ["A", "B", "C", "D"]

alphabet.insert("E", at: 4)
// ["A", "B", "C", "D", "E"]

alphabet.insert(contentsOf: ["a", "b"], at: 0)
// ["a", "b", "A", "B", "C", "D", "E"]

 

배열에 요소를 추가하고, 삽입하는 걸 배웠다면 이제 삭제, 변경 방법도 알아야겠죠?

근데 그 전에 배열의 접근 방법을 알아야 합니다.

 

 

 

배열에 접근하기

배열은 대괄호 문법(subcript)을 사용하는데, 대괄호 안에 index나 범위(range)를 넣어 배열의 요소에 접근할 수 있어요!

var names: String = ["Anna", "Alex", "Brian", "Jack"]

names[0] // "Anna"
names[1] // "Alex"
names[2] // "Brian"
names[3] // "Jack"

 

 

 

배열의 요소 삭제하기

배열의 요소를 삭제할 때는, remove(at:)메서드를 사용해주면 됩니다! 서브스크립트 문법과 곁들여서 말이져

var students = ["Ben", "Ivy", "Jordell", "Liam", "Maxime", "Shakia", "William"]

students.remove(at: 0)
// ["Ivy", "Jordell", "Liam", "Maxime", "Shakia", "William"]

 

스크립트 문법을 이용해서도 삭제할 수 있습니다.

var students = ["Ben", "Ivy", "Jordell", "Liam", "Maxime", "Shakia", "William"]

students[0] = []
// ["Ivy", "Jordell", "Liam", "Maxime", "Shakia", "William"]

students[4...5] = []
// ["Ivy", "Jordell", "Liam", "Maxime"]

 

배열의 요소 교체하기

서브스크립트 문법을 이용한다면, 배열의 요소를 쉽게 교체할 수도 있습니다.

var students = ["Ben", "Ivy", "Jordell", "Liam", "Maxime", "Shakia", "William"]

students[0] = ["john"]
// ["john", "Ivy", "Jordell", "Liam", "Maxime", "Shakia", "William"]

students[6...7] = ["Zooey", "Anna"]
// ["john", "Jordell", "Liam", "Maxime", "Zooey", "Anna"]

 

 

 

배열의 기타기능

배열의 요소 갯수 알아보기

var students = ["Ben", "Ivy", "Jordell", "Liam", "Maxime", "Shakia", "William"]

students.count // 7

 

빈 배열인지 알아보기

var students = ["Ben", "Ivy", "Jordell", "Liam", "Maxime", "Shakia", "William"]

students.isempty // false

 

해당 요소가 있는지 알아보기

var students = ["Ben", "Ivy", "Jordell", "Liam", "Maxime", "Shakia", "William"]

students.contains("Ivy") // false

 

 

반복문과 배열 함께 활용하기

아래처럼 for-in 반복문에 배열을 넣으면 배열의 각 요소들을 빼서 보여줍니다.

let in shoppingList = ["Six eggs", "Milk", "Flour", "Baking Powder", "Bananas"]

for item in shoppingList {
    print(item)
}

// Six eggs
// Milk
// Flour
// Baking Powder
// Bananas

 

 

 


xcode를 통해 이런 저런 예제를 만들다보니까,

생각보다 Array와 Dictionary가 많이 쓰이더라구요.

 

그래서 정리해본 Array!

혹시 틀린 내용이 있다면 언제든지!! 알려주세여!!

 

 

'swift' 카테고리의 다른 글

[swift] Singleton 알아보기  (0) 2022.03.14
[swift] Result Type 알아보기  (0) 2022.02.03
[swift] 고차함수 1 - map  (0) 2021.12.28
[swift] CaseIterable protocol  (0) 2021.12.11
[swift] Collection Type - Dictionary  (0) 2021.12.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크