본문 바로가기
모바일앱/Swift

Collection - Array

by GeekCode 2021. 10. 9.
반응형

정말 많은 변수들이 등장한다.

그 많은 변수들을 관리할 때에는 통(collection)에 넣어서 관리를한다.

 

커피셔틀

형식은 

1. 앞에서 부터 부장님 차장님 팀장님 그다음 내꺼

2. 각각 부장님 차장님 팀장님 내꺼 스티커 붙이기

등등

 

여러 통의 종류가 있다.

Array

Dictionary

Set

+ Closure

 

우리는 어떻게 엮였을 때 효과적인지를 집중하며 알아보자

Array와 Dictionary는 정말 필수개념이다.

 

 

Array

Element Element Element Element

이 통에 담을 때에는 전부 같은 타입이어야 한다.

 

O 같은 타입

Type 1 Type 1 Type 1 Type 1

 

X 다른 타입

Type 1 Type 1 Type 2 Type 2

 

INDEX

각각의 Element에 번호가 붙어있다.

첫번째 : 0 

마지막 : 전체 갯수 - 1 번

Index 0 Index 1 Index 2 Index 3

 

언제 사용할까

  • 순서가 있는 아이템
  • 아이템의 순서를 알면 유용할 때

 

 

import UIKit

//Array declaration
//let evenNumbers: [Int] = [2, 4, 6, 8]

//let evenNumbers2: Array<Int> = [2, 4, 6, 8]

//evenNumbers.append(10)
//Cannot use mutating member on immutable value: 'evenNumbers' is a 'let' constant

//var evenNumbers: [Int] = []
//빈통
var evenNumbers: [Int] = [2, 4, 6, 8]
evenNumbers.append(10)
//Adds a new element at the end of the array.
evenNumbers += [12,14,16]
evenNumbers.append(contentsOf: [18, 20])

//evenNumbers = []
let isEmpty = evenNumbers.isEmpty
//비어있으면 true

evenNumbers.count
//10

print(evenNumbers.first)
//Optional(2) 옵셔널로 반환
// declaration : let firstItem: Int?
//상자안에 값이 있을 수도 있고 없을 수도 있기 때문
//evenNumbers = [] //nil
//let firstItem = evenNumbers.first
//let firstItem = evenNumbers.last //있을수도 없을 수도

//옵셔널바인딩으로 깔끔하게
//if let firstElement = evenNumbers.first {
//    print("---> first item is : \(firstElement)")
//}


evenNumbers.min()
evenNumbers.max()


evenNumbers[0]
//first item

var firstItem = evenNumbers[0]
var secondItem = evenNumbers[1]
var tenthItem = evenNumbers[9]


//var twentythItem = evenNumbers[19]
//error: Execution was interrupted, 너무 크리티컬한 에러


// ------->
// Range 사용하기
evenNumbers
let fistThree = evenNumbers[0...2]
//[2, 4, 6]
evenNumbers.contains(3)
//false
evenNumbers.contains(4)
//true
evenNumbers.insert(0, at: 0)
//[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
//evenNumbers.removeAll()
evenNumbers.remove(at: 0)
//특정 인덱스 삭제
evenNumbers
//[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
evenNumbers[0] = -2
evenNumbers
//[-2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
evenNumbers[0...2] = [-2,0,2]
evenNumbers
//[-2, 0, 2, 8, 10, 12, 14, 16, 18, 20]
//evenNumbers.swapAt(0, 1)
//[0, -2, 2, 8, 10, 12, 14, 16, 18, 20]
evenNumbers.swapAt(0, 9)
//[20, 0, 2, 8, 10, 12, 14, 16, 18, -2]

// ---> for문을 이용해 꺼내보기
//for num in evenNumbers{
//    print(num)
//}
/*
20
0
2
8
10
12
14
16
18
-2
 */
// ---> index 번호와 value를 표시하는 방법
//for (index, num) in evenNumbers.enumerated() {
//    print("index: \(index), value: \(num)")
//}
/*
index: 0, value: 20
index: 1, value: 0
index: 2, value: 2
index: 3, value: 8
index: 4, value: 10
index: 5, value: 12
index: 6, value: 14
index: 7, value: 16
index: 8, value: 18
index: 9, value: -2
*/

let firstThreeRemoved = evenNumbers.dropFirst(3)
//앞에 3개만 빼고 보고 싶을때
evenNumbers //[20, 0, 2, 8, 10, 12, 14, 16, 18, -2]
firstThreeRemoved //[8, 10, 12, 14, 16, 18, -2]
let lastRemoved = evenNumbers.dropLast() //[20, 0, 2, 8, 10, 12, 14, 16, 18]
lastRemoved //[20, 0, 2, 8, 10, 12, 14, 16, 18]

let firstThree = evenNumbers.prefix(3) //[20, 0, 2]
let lastThree = evenNumbers.suffix(3) //[16, 18, -2]


//기억해야할 것
evenNumbers.isEmpty
evenNumbers.count
//evenNumbers[인덱스 번호]를 용하여 접근
//for 루프를 이용해 순서대로 가져오는 방법


// ---> index 번호와 value를 표시하는 방법

//for num in evenNumbers{
//    print(num)
//}

//for (index, num) in evenNumbers.enumerated() {
//    print("index: \(index), value: \(num)")
//}

 

반응형