배열(Array)은 Swift뿐만 아니라 모든 프로그래밍 언어를 통틀어서 가장 많이 사용하는 컬렉션(Collection) 타입입니다.
배열은 순서가 있는 컬렉션 타입이기 때문에 값의 중복을 허용합니다. 또한 같은 배열에는 동일한 데이터 타입만 할당할 수 있습니다. (Any타입을 사용하면 모든 타입 가능하긴 하지만... 추천하는 방법은 아닙니다...)
배열 공간에는 각각의 인덱스 번호가 부여됩니다. 인덱스 번호는 0부터 시작되며, 각각의 인덱스 번호는 순서(오름차순)가 존재합니다.
빈 배열을 만드는 대표적인 방법으로는 세 가지가 존재합니다.
✅ 빈 배열 만들기
var arr1 = [Int]() var arr2: [Int] = [] var arr3 = Array<Int>()
데이터를 추가할 때는 append(추가할 값)
메서드를 사용합니다.
배열 중간에 데이터를 추가할 때는 insert(추가할 값, at: 추가될 인덱스)
메서드를 사용합니다.
✅ 배열에 데이터 추가
// 배열에 값을 추가할 때는 append(<값>)를 사용한다. // 배열 중간에 값을 추가 할 때는 insert(<값>, at:<인덱스>) var arr = [1,2,3,4] arr.append(5) // [1, 2, 3, 4, 5] arr.insert(0, at: 0) // [0, 1, 2, 3, 4, 5]
배열에 데이터를 삭제하는 방법은 크게 네 가지가 존재합니다.
✅ 특정 인덱스의 데이터를 삭제
arr.remove(at:n) //배열의 n번째 값을 삭제
✅ 배열의 모든 데이터를 삭제
arr.removeAll()
✅ 배열의 첫 번째 데이터을 삭제
arr.removeFirst() arr.removeFirst(n) // 배열의 첫 번째(0)부터 n개 삭제
✅ 배열의 마지막 데이터를 삭제
arr.removeLast() arr.removeLast(n) // 배열의 마지막 번째부터 n개 삭제
배열에서는 오름차순, 내림차순, 역순(반대) 정렬을 할 수 있는 메서드가 존재합니다.
✅ 오름차순 정렬
오름차순 정렬 메서드는
sort()
==sort(by:<)
이 있습니다.arr.sort() == arr.sort(by:<)
오름차순의 정렬 결과를 리턴하고, 원본을 그대로 하고 싶을 때는
sorted()
메서드를 사용합니다.arr.sorted(by:<) == arr.sorted(by:<)
✅ 내림차순 정렬
내림차순 정렬 메서드는
sort(by:>)
이 있습니다.arr.sort(by:>)
내림차순의 정렬 결과를 리턴하고, 원본을 그대로 하고 싶을 때는
sorted(by:>)
메서드를 사용합니다.arr.sorted(by:>)
✅ 역순(반대) 정렬
역순(반대) 정렬 메서드는
reverse()
이 있습니다.arr.reverse()
역순(반대) 정렬 결과를 리턴하고, 원본을 그대로 하고 싶을 때는
reversed()
메서드를 사용합니다.arr.reversed()
배열에 할당된 데이터의 최대/최소값을 알고 싶을 때는 max(), min()
메서드를 사용합니다.
배열의 최대/최소값 메서드를 사용하면 반환 값을 Optional(옵셔널) 타입으로 받게 됩니다. 이는 빈 배열의 가능성 때문입니다. (빈 배열에 max(), min()
메서드를 사용하면 nil이 출력)
문자(Character), 문자열(String)이 할당된 배열의 경우에는 유니코드 값을 기준으로 최대/최소값이 반환됩니다.
✅ 배열의 최대값
arr.max() // 배열의 최대값 return
✅ 배열의 최소값
arr.min() // 배열의 최솟값 return
배열은 repeating:
키워드와 count:
키워드를 사용하여 특정 값을 원하는 개수만큼 초기화할 수 있습니다.
✅ 특정값을 원하는 개수만큼 초기화
var x1 = Array(repeating: 1, count: 4) var x2 = [Int](repeating:2, count: 4) print(x,x1,x2) /* 출력 결과 [1, 1, 1, 1] [2, 2, 2, 2] */
✅ 배열의 데이터 수를 반환
arr.count // 배열안에 데이터 수를 return
✅ 배열에 데이터 여부 확인
arr.isEmpty // 배열안에 데이터가 없으면 true, 있으면 false return
✅ 배열의 첫 번째 데이터를 옵셔널 타입으로 반환
arr.first // 배열의 첫 번째 데이터를 옵셔널 타입으로 return
✅ 배열의 마지막 데이터를 옵셔널 타입으로 반환
arr.last // 배열의 마지막 데이터를 옵셔널 타입으로 return
✅ 배열안의 데이터 교환
arr.swapAt(n, m) // 배열안의 n번 인덱스값과 m번 인덱스값을 교환
✅ 배열에 특정 데이터의 여부 확인
arr.contains(<value>) // 배열안에 해당 값이 있으면 true return
이 외에도 배열에서 사용 가능한 메서드 및 기능들이 많이 있습니다.