Swift/문법

Array / Dictionary / Set

khon98 2021. 3. 1. 21:15

Array

- 같은 타입만 담아야 함

- 순서가 있는 경우, 순서를 알면 유용할 때 Array 사용

// Array
// Array 사용법
//var Array1: [Int] = [1, 2, 3, 4]
//var Array2: Array<Int> = [1, 2, 3, 4]

// Array에 값을 추가 하고 싶을때 append 사용
var Array: [Int] = [2, 4, 6, 8]
Array.append(10)

// 여러 개의 값을 넣을 때
Array += [12, 14, 16]
Array.append(contentsOf: [18, 20])

// Array에 값이 있으면 false 없으면 true
//Array = []
let isEmpty = Array.isEmpty

// element가 몇 개 있는지 알고 싶을 때
Array.count

// 첫 번째 값을 알고 싶을때, 마지막 값을 알고 싶을 때는 last
// 값이 있을수도 있고 없을수도 있기 때문에 옵셔널 타입임
print(Array.first)

let FirstElement = Array.first

if let FirstElement = Array.first {
    print("first elements: \(FirstElement)")
}

// 해당 Array의 최소, 최대 값을 알고 싶을 때
Array.min()
Array.max()

// 해당 인덱스의 값을 알고 싶을 때
var firstElement = Array[0]
var secondElement = Array[1]
var tenthElement = Array[9]

let firstThree = Array[0...2]

// 해당하는 값이 있는지 알고 싶은 경우
Array.contains(3)
Array.contains(4)

// 특정 인덱스를 삽입
Array.insert(0, at: 0) // 0을 0번째 인덱스에 삽입

// 특정 인덱스 삭제
Array.remove(at: 0)
Array

// 인덱스 삭제
//Array = []
//Array.removeAll()

// 인덱스 값 변경
Array[0] = -4
Array[1...3] = [-2, 0, 2]
Array

// 인덱스 스왑
Array.swapAt(0, 1)

// 원하는 값이 몇 번째 인덱스에 있는지 알고 싶을 때
for (index, num) in Array.enumerated() {
    print("idx:\(index), value:\(num) ")
}

// 앞에서 세 개의 인덱스를 없애는 법, 뒤에서 없애는 법은 dropLast
Array
let FirstThreeRemoveArray = Array.dropFirst(3)
Array
let BackFirstThreeRemoveArray = Array.dropLast(3)

// 앞에서 인덱스를 가져올 때, 뒤에서는 suffix
Array
let firstsecond = Array.prefix(2)
Array
let backfirstsecond = Array.suffix(2)

 

 

Dictionary

- Array와 다르게 순서가 없음

- Key와 Value로 이루어짐

// Dictionary 표현
var Score: [String: Int] = ["khon": 100, "khon01": 98]
//var Score: Dictionary<String, Int> = ["khon": 100, "khon01": 98]

if let score = Score["khon"] {
    score
} else {
    print("없음")
}

Score["khon02"]

// Dictionary를 빈 값으로 만드는 법
//Score = [:]

// Score에 데이터가 있는지 확인, 있으면 false 없으면 true
Score.isEmpty

// Score에 몇 개의 값이 있는지 확인
Score.count

// 데이터 업데이트
Score["khon"] = 95
Score

// 데이터 추가
Score["khon02"] = 97
Score

// 데이터 제거
Score["khon01"] = nil
Score

// key와 value 값 모두 알고 싶을때
for (name, value) in Score {
    print("\(name), \(value)")
}

// key 값만 알고 싶을 때
for key in Score.keys {
    print(key)
}

print("\n")


// 이름, 직업, 도시에 대한 딕셔너리 생성
var Dic: [String: String] = ["name": "khon", "job": "Student", "city": "seoul" ]

// 도시를 부산으로 데이터 업데이트
Dic["city"] = "busan"
Dic

// 이름과 도시만 출력하는 함수 생성
func printDic(dic:[String: String]) {
    if let name = dic["name"], let city = dic["city"] {
        print(name, city)
    } else {
        print("No")
    }
}

printDic(dic: Dic)

 

 

Set

- 순서가 없음

- 유일한 값을 가지는 타입

- 중복이 없는 유익한 아이템을 관리 할 때, 순서가 중요하지 않을 때 사용

// Set
var Array: Array<Int> = [1, 2, 1, 3]
var Set: Set<Int> = [1, 2, 1, 3] // 중복된 값은 제외하고 출력

Set.isEmpty
Set.count // 중복된 값은 제외

Set.contains(4) // 4는 없으므로 false
Set.contains(3)

Set.insert(5) // 5 추가
Set

Set.remove(1) // 1 제거
Set