[Swift] 배열(Array), 배열 선언 방법, 추가, 수정, 삭제, count, isEmpty, for ~ in

2024. 7. 5. 01:24·[Programming Language]/[Swift]

[머릿말]

Swift에도 배열이 존재하는데 다른 프로그래밍 언어에서 보았던 것과 전반적으로 비슷비슷 한 것 같다.


1. 배열(Array)

  배열은 특정 타입의 값을 순서대로 저장한다. 즉, 배열에 저장된 각 값은 각각의 Index 값을 갖는다. 그러므로 중복되는 값도 얼마든지 저장할 수 있다. 

1-1. 배열 선언 방법

  배열은 다양한 방법을 사용하여 선언할 수 있다.

let arr1 = [Int]()  // 가장 많이 사용되는 형식
let arr2: [Int] = []
let arr3: Array<Int> = []
let arr4 = [1, 2, 3, 4, 5]

위 방법을 사용하여 배열을 선언할 수 있고, arr1을 선언하는 방법이 제일 많이 사용되는 방법이다. arr3은 거의 사용되지 않는 방법이다. Swift는 type-safe 하기 때문에 배열에는 같은 타입의 값만 저장할 수 있다. 만약 모든 타입의 값을 저장할 수 있는 배열을 선언하고 싶다면 Any 타입으로 선언해주면 된다.

var arr = [Any]()

arr.append(1)
print(arr)	// [1]

arr.append("ABC")
print(arr)	// [1, "ABC"]


// var arr2 = [1, "ABC"]  -> Error!

 

  배열의 기본 값과 크기를 선언하는 방법도 있다. 기본 값이 될 요소를 repeating에 적고 크기를 count에 적으면 된다.

let arr1 = Array(repeating: 10, count: 3)
let arr2 = Array(repeating: ["A", "B", "C"], count: 2)

print(arr1) // [10, 10, 10]
print(arr2) // [["A", "B", "C"], ["A", "B", "C"]]

1-2. 배열의 병합

1-2-1. + 연산자

+ 연산자를 사용하여 서로 다른 여러 배열을 하나로 합칠 수 있다. 이때 연산에 사용되는 배열들의 타입은 일치해야 한다.

var arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
let arr3 = [7, 8, 9]

arr1 = arr1 + arr2 + arr3
print(arr1) // [1, 2, 3, 4, 5, 6, 7, 8, 9]

1-2-2. append(contentsOf: )

append 메서드를 사용하면 배열의 맨 뒷부분에 새로운 요소를 추가할 수 있다. 이때 contestsOf: 키워드를 사용하면 배열을 추가할 수 있다.

var arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
let arr3 = [7, 8, 9]

arr1.append(contentsOf: arr2)
print(arr1) // [1, 2, 3, 4, 5, 6]

arr1.append(contentsOf: arr3)
print(arr1) // [1, 2, 3, 4, 5, 6, 7, 8, 9]

1-3. count

count 속성(property)을 사용하면 배열의 길이(요소의 개수)를 확인할 수 있다. 자주 사용되는 속성이다.

var arr1 = [Int]()
var arr2 = [1, 2, 3]

print(arr1.count) // 0
print(arr2.count) // 3

1-4. isEmpty

isEmpty 속성은 배열에 아무런 요소가 없으면 true를, 하나 이상의 요소가 존재하면 false를 반환한다. 이 역시 자주 사용되는 속성이다.

var arr = ["Hello", "Swift"]
print(arr) // ["Hello", "Swift"]
print(arr.isEmpty) // false
print()

arr = []
print(arr) // []
print(arr.isEmpty) // true

1-5. 새로운 요소 추가

1-5-1. append( )

이미 위에서 다룬 것처럼 append() 메서드를 사용하면 배열의 맨 뒷부분에 새로운 요소를 추가할 수 있다.

var arr = [10]

arr.append(20)
print(arr) // [10, 20]

arr.append(contentsOf: [100, 200])
print(arr) // [10, 20, 100, 200]

1-5-2. insert( )

맨 뒷부분에 값이 추가되는 append 메서드와 달리 insert 메서드는 원하는 위치에 값을 추가할 수 있다. 이때 하나의 요소만 추가할 수 있다. 추가할 요소를 앞에 적고, at 키워드에 추가할 인덱스의 번호를 적으면 된다.

var arr = ["A", "B", "C", "D", "E"]

arr.insert("OOO", at: 2)
print(arr) // ["A", "B", "OOO", "C", "D", "E"]

arr.insert("HELLO", at: 0)
print(arr) // ["HELLO", "A", "B", "OOO", "C", "D", "E"]

1-6. 특정 요소에 접근하는 방법

앞서 말한 것처럼 배열은 순서를 갖으므로 각 요소별 인덱스가 존재한다. 이를 사용하여 요소에 접근할 수 있다. 만약 배열의 크기보다 큰 인덱스에 접근하려 하면 오류가 발생한다. Swift에서 배열의 시작 인덱스는 다른 언어와 동일하게 0이다.

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

print(arr[0]) // 1
print(arr[1]) // 2
print(arr[2]) // 3
print(arr[3]) // 4
print(arr[4]) // 5

// print(arr[5]) -> Fatal error: Index out of range

 

범위 연산자를 사용하여 특정 인덱스의 범위에 포함되는 모든 요소에 접근하는 것도 가능하다.

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

print(arr[0...2]) // [1, 2, 3]
print(arr[3..<5]) // [4, 5]

 

이러한 방법을 사용하여 요소의 값을 변경할 수도 있다.

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

arr[2...4] = [0, 0, 0]
print(arr) // [1, 2, 0, 0, 0]

arr[0] = 100
print(arr) // [100, 2, 0, 0, 0]

1-7. 기존 요소의 삭제

1-7-1. remove(at: )

이 방법을 사용하면 특정 인덱스에 해당하는 요소를 삭제할 수 있다.

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

arr.remove(at: 2) // 3 삭제
print(arr) // [1, 2, 4, 5]

1-7-2. removeAll()

전체 요소를 삭제하는 방법이다.

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

arr.removeAll()
print(arr) // []

1-7-3. removeFirst(), removeLast()

각각 배열의 맨 앞 요소와 맨 뒤 요소를 삭제하는 방법이다.

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

arr.removeFirst()
print(arr) // [2, 3, 4, 5]

arr.removeLast()
print(arr) // [2, 3, 4]

1-7-4. removeSubrange()

특정 범위의 전체 요소를 삭제하는 방법이다.

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

arr.removeSubrange(1...3)
print(arr) // [1, 5]

1-8. for ~ in

for 반복문을 사용하면 배열의 전체 요소를 앞에서부터 하나씩 모두 접근할 수 있다.

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

for item in arr {
    print(item)
}

/*
 1
 2
 3
 4
 5
 */

1-8-1. sorted()

배열의 요소를 오름차순 또는 내림차순으로 정렬하여 하나씩 접근할 수 있다.

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

for item in arr.sorted() { // 오름차순
    print(item, terminator: " ")
}
// 1 2 3 4 5

print()
for item in arr.sorted(by: >) { // 내림차순
    print(item, terminator: " ")
}
// 5 4 3 2 1

1-8-2. enumerated()

이 메서드는 배열의 인덱스와 그에 해당되는 값을 동시에 반환한다. 이때 for (index, value) in 처럼 반복 변수는 튜플 형태로 사용해야 한다.

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

for (i, v) in arr.enumerated() {
    print("index: \(i), value: \(v)")
}

/*
 index: 0, value: 1
 index: 1, value: 2
 index: 2, value: 3
 index: 3, value: 4
 index: 4, value: 5
 */

어느 언어든지간에 배열은 가장 기본이자 핵심이므로 내용을 잘 익혀두도록 해야겠다.

끝!

 

저작자표시 비영리 변경금지 (새창열림)

'[Programming Language] > [Swift]' 카테고리의 다른 글

[Swift] 딕셔너리(Dictionary), 선언, count, isEmpty, 추가, 수정, 삭제, for ~ in, keys, values  (0) 2024.07.07
[Swift] 집합(Set), 집합 선언, count, isEmpty, 추가(insert), 삭제(remove), contain, for ~ in, 집합 연산, isSuperset, isSubset, isDisjoint  (0) 2024.07.06
[Swift] 문자열(Strings), 문자열 내에 변수 출력 방법, 여러줄 문자열, 문자열 결합  (1) 2024.07.03
[Swift] assert와 precondition의 차이점  (0) 2024.07.02
[Swift] 연산자(대입, 산술, 복합 대입, 비교, 삼항, Nil 결합, 범위, 논리)  (0) 2024.07.01
'[Programming Language]/[Swift]' 카테고리의 다른 글
  • [Swift] 딕셔너리(Dictionary), 선언, count, isEmpty, 추가, 수정, 삭제, for ~ in, keys, values
  • [Swift] 집합(Set), 집합 선언, count, isEmpty, 추가(insert), 삭제(remove), contain, for ~ in, 집합 연산, isSuperset, isSubset, isDisjoint
  • [Swift] 문자열(Strings), 문자열 내에 변수 출력 방법, 여러줄 문자열, 문자열 결합
  • [Swift] assert와 precondition의 차이점
Semincolon
Semincolon
It seems small, that semicolon is a big deal.
  • Semincolon
    Semincolon
    Semincolon
  • 전체
    오늘
    어제
    • 분류 전체보기 (132) N
      • [Programming Language] (77)
        • [JSP] (5)
        • [Swift] (23)
        • [SwiftUI] (16)
        • [Python] (22)
        • [C언어] (6)
        • [Kotlin] (4)
        • [C#] (1)
      • [Frame Work] (5)
        • [Flutter] (4)
        • [Spring Boot] (1)
      • [Projects] (3)
        • [Android][Kotlin] 공유 캘린더(20.. (1)
        • [Unity] 인내의 숲(2024.03) (2)
      • [DB] (15) N
        • - Oracle (15) N
      • [Programmers] (25)
        • - SQL (25)
      • [ETC] (2)
      • Today's Learning (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Semincolon
[Swift] 배열(Array), 배열 선언 방법, 추가, 수정, 삭제, count, isEmpty, for ~ in
상단으로

티스토리툴바