iOS/Swift

[Swift] Array

듀니듀니 2022. 11. 16. 15:29

오늘은 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