오늘은 Array(배열)에 대해 정리해봤어요.
- 간단한 특징
- Ordered Collection (저장된 순서대로 저장)
- Single Type (배열안의 자료형은 동일해야함)
- 중복 가능, 같은 값이라 해도 개별요소로 처리
- 0-based Index // 배열의 요소를 찾을 때 사용
Array ?
[elem, elem, ....]
let nums =[1, 2, 3]
Array<T> // 정식 문법
[T] // 단축 문법
let strArray: Array<String>
let strArray2: [String]
Array - Creating an Array
let nums = [1, 2, 3]
let emptyArray: [Int] = [] // 빈 리터럴을 사용할땐 형식 지정해줘야함
let emptyArray2 = Array<Int>()
let emptyArray3 = [Int]()
let zeroArray = [Int](repeating: 0, count: 10) // 0이 10개가 채워진 배열이 생성
Accessing Elements
let fruits = ["Apple", "Banana", "Melon"]
let emptyArray: [Int] = []
fruits[0] // Apple
fruits[3] // error
fruits[0...1] // Apple, Banana
fruits[fruits.startIndex] // Apple
fruits[fruits.endIndex] // Error, endIndex 전 데이터에 접근해야함
fruits[fruits.index(before: fruits.endIndex)] // Melon
fruits.first // Apple
fruits.last // Melon
emptyArray.first // nil
emptyArray.last // nil
Adding Elements
var alphabet = ["A", "B", "C"]
alphabet.append("E") // E 추가
alphabet.append(contentsOf: ["F", "G"])
//insert는 오버헤드가 발생할 수 있기에 가급적 사용하지 않는다.
alphabet.insert("D", at: 3) // 3번쨰 칸에 추가
alphabet.insert(contestOf: ["a", "b", "c"], at:0) // 0번째칸에
alphabet[0...2] = ["x", "y", "z"] // 0,1,2 번째 배열데이터를 바꿈
alphabet.replaceSubrange(0...2, with: ["a", "b", "c"]) // 위아같은 배열 바꿔치기
alphabet[0...2] = ["z"] // 0~2 번째 배열을 "z"로 바꿈 (3개 -> 1개가 됨)
alphabet[0..<1] = [] // 빈배열을 보내면 원하는 범위가 삭제됨
Removing Elements
numArray = [1, 2, 3, 4, 5]
numArray.remove(at: 2) // 3 제거
//빈배열에 removeFirst 쓰면 에러
numArray.removeFirst() // 첫번째 요소 제거후 출력
numArray.removeFirst(2) // 앞 2개 제거, 출력은 x
numArray.removeAll() // 배열에 있는 모든 요소 제거, 빈 배열이 됨
numArray= [1, 2, 3, 4, 5, 6, 7]
numArray.popLast() // 7 제거
numArray.removeSubrange(0...2) // 0,1,2번째 배열 제거
numArray[0...2] = [] // 위와 같이 해당 범위 제거
Finding Elements
let nums = [1, 2, 3, 1, 4, 5, 2, 6, 7, 5, 0]
nums.contain(1) // true
nums.contain(8) // false
nums.contains { (n) -> Bool in
return n % 2 == 0
} // true
num.first { (n) -> Bool in
return n % 2 == 0
} // 2
num.firstIndex { (n) -> Bool in
return n % 2 == 0
} // 1
nums.firstIndex(of: 1) // 2번째 인덱스 1
nums.lastIndex(of: 1) // 5
Sorting
// sort -> 배열을 직접 정렬
// sorted -> 정렬된 새로운 배열을 리턴
nums.sorted() // 오름차순으로 정렬
nums.sorted { (a, b) -> bool in
return a > b
} // 내림차순으로 정렬
nums.sorted().reversed()
[Int](nums.sorted().reversed())
var mutableNums = nums
mutableNums.sort() // 오름차
mutableNums.reverse() //내림차
mutableNums.swapAt(0, 1) // 첫번째와 두번째 요소의 위치가 바뀜
mutableNums.shuffle() // 순서 무작위로 바꿈
'iOS > Swift' 카테고리의 다른 글
| [Swift] 서브스크립트 (Subscripts) (0) | 2022.11.25 |
|---|---|
| [Swift] 클래스와 구조체 (Class, Struct) (0) | 2022.11.22 |
| [Swift] Optional (0) | 2022.11.17 |
| [Swift] Any, AnyObject (0) | 2022.11.15 |
| [Swift] 타입캐스팅 (Type Casting) (0) | 2022.11.15 |