VesselWheel

Collection : Array, List 본문

Xcode Study

Collection : Array, List

JasonYang 2023. 10. 19. 13:09

import UIKit

 

/*

 Collection : Array(배열), List

              Dictionary,

              Set

 

 Array(배열) - 같은 type 의 data 를 여러 개 저장함

              index 가 있음 (순서가 있음)

              Int 배열, String 배열, 구조체 배열,

              클래스(객체) 배열

 

 List - cf. ArrayList (in Java)

  ㄴ 배열(Array)과 비슷하나,

    서로 다른 type 의 data 를 여러 개 저장할 수 있음

 

 */

 

var arr1: Array<Int> = Array<Int>()

var arr2: Array<Int> = [] // <-- 많이 사용함

var arr3: [Int] = []  // <-- 많이 사용하는 편

 

// 타입 추정

var arr4 = Array<Int>()

var arr5 = [Int]()

 

var arr6: [Int] = []

arr6.append(11)

arr6.append(12)

arr6.append(13)

print("arr6 : \(arr6)")

dump(arr6)

 

// Array(배열) 에 저장된 값 확인하기 : contains()

print(arr6.contains(22))

print(arr6.contains(12))

 

// 배열의 크기(길이) - 저장하고 있는 elements 의 개수

print("arr6.count : \(arr6.count)")

 

// 배열의 element(요소) 삭제하기 : remove(at:index)

arr6.remove(at: 0)

print(arr6)

print("arr6.count : \(arr6.count)")

 

// 배열의 마지막 요소 삭제하기

arr6.removeLast()

print(arr6)

print("arr6.count : \(arr6.count)")

 

 

arr6.append(14)

arr6.append(15)

arr6.append(16)

print(arr6)

print("arr6.count : \(arr6.count)")

 

// 모든 요소를 한꺼번에 삭제하기 : removeAll()

arr6.removeAll()

print(arr6)

print("arr6.count : \(arr6.count)")

 

 

arr6.append(11)

arr6.append(12)

arr6.append(13)

print(arr6)

print("arr6.count : \(arr6.count)")

 

// 배열 중간에 요소 추가하기 : insert(value, at: index)

arr6.insert(14, at: 1)

print(arr6)

print("arr6.count : \(arr6.count)")

 

arr6.insert(15, at: 3)

print(arr6)

print("arr6.count : \(arr6.count)")

 

arr6.append(16)

print(arr6)

print("arr6.count : \(arr6.count)")

 

// 배열이 비어있는지 알아보기 : isEmpty 속성

print(arr6.isEmpty)

arr6.removeAll()

print(arr6.isEmpty)

 

arr6.append(11)

arr6.append(12)

arr6.append(13)

arr6.append(14)

arr6.append(15)

arr6.append(16)

// 배열 (순환 : 순회) 출력

for number in arr6{

    print(number)

}

 

/*

 hobbies 라는 문자열 type 배열 생성하기

 "독서","영화감상,"등산","축구" 를 추가하기

 배열의 크기 출력하기

 모든 요소 출력하기 (for 문)

 "등산" 만 출력하기

 "야구" 가 있는지 알아보기

 */

var hobbies: [String] = []

hobbies.append("독서")

hobbies.append("영화감상")

hobbies.append("등산")

hobbies.append("축구")

print(hobbies)

print(hobbies.count)

for hobby in hobbies{

    print(hobby)

}

// [] 를 사용해서 index 번호를 지정하면 해당 요소를 참조함

print(hobbies[2])

print(hobbies.contains("야구"))

 

 

/*

옵셔널 바인딩으로 index 가져오기

 */

if let index = hobbies.firstIndex(of: "독서"){

    print("독서의 index : \(index)")

}

 

/*

 배열 관련 자료형

 

 NS 계열    : NSArray(읽기만 가능),

             NSMutableArray(읽기, 쓰기 모두 가능)

 Swift 계열 : Array(var, let)

 */

 

// NSArray -> Array(Swift Array) 로 변환하기

var NSArray1 = NSArray(objects: "a", "b", "c", "d")

print(NSArray1)

// NSArray -> NSMutableArray

var mutableArray1 = NSMutableArray(array: NSArray1)

 

// NSMutableArray -> Array(Swift Array) 로 변환하기

if let switfArray = mutableArray1 as NSArray as? Array<String>{

    print(switfArray)

}

// as 형변환

// as? 옵셔널 형변환 : nil 이 아닌 경우에만 변환해서 오류가

//                 발생하지 않도록 함

//                 nill 이면 변환하지 않음

 

/*

 Swift Array  -->  NSMutableArray

  */

var swiftArray2: [String] = ["a","b","c"]

var mutableArray2 = NSMutableArray(array: swiftArray2)

 

 

/*

 Swift Array  -->  NSArray

  */

var swiftArray3: [String] = ["a","b","c"]

var NSArray3 = NSArray(array: swiftArray3)

 

 

/*

 배열의 element 들이 같은지 알아보기

 */

let arr7 = [1, 2, 3, 4, 5]

let arr8 = [1, 2, 3, 4, 5]

if arr7 == arr8{

    print("element 들이 같음")

}else{

    print("element 들이 다름")

}

 

/*

 배열의 element 를 다른 값으로 치환하기

 */

var arr9 = ["A","B","C","D"]

print(arr9)

arr9.replaceSubrange(0..<2, with: ["E", "F"])

print(arr9)

 

/*

 배열의 정렬 : 오름차순

 */

var arr10 = ["자",  "가", "라", "바"]

print(arr10)

let sortedArr1 = arr10.sorted()

print(sortedArr1)

 

/*

 배열의 정렬 : 내림차순

 */

var arr11 = ["자",  "가", "라", "바"]

print(arr11)

let descendingSortedArr = Array(arr11.sorted().reversed())

print(descendingSortedArr)

 

/*

 범위를 지정해서 element 추출하기

 sortedArr1 : ["가", "라", "바", "자"]

 */

let rangedArr1 = sortedArr1[0...1]

let rangedArr2 = sortedArr1[0...2]

let rangedArr3 = sortedArr1[0...3]

print(rangedArr1)

print(rangedArr2)

print(rangedArr3)

 

/*

 구조체(클래스) 의 객체로 된 배열

 */

 

struct Student{

    var name = "더조은"

    var stdno  = 111111

}

 

class Professor{

    var profname = "이순신"

    var profno = 111

}

 

struct Struct1{

    var name = "더조은"

    var age  = 21

    func func1(){

        print("func1()")

    }

}

// [Int], [String], [Student], [Professor], [Struct1]

 

// student1 배열의 요소 하나에는 Student 구조체에 있는

// 변수 name, stdno 가 같이 들어감

var studentArr1: [Student] = []

 

var student1 = Student()

var student2 = Student()

var student3 = Student()

 

studentArr1.append(student1)

studentArr1.append(student2)

studentArr1.append(student3)

 

print("studentArr1 : \n\(studentArr1)")

 

// professor1 배열의 요소 하나에는 Student 구조체에 있는

// 변수 profname, profno 가 같이 들어감

var professorArr1: [Professor] = []

 

var professor1 = Professor()

var professor2 = Professor()

var professor3 = Professor()

 

print("professorArr1 : \n\(professorArr1)")

 

// struct1 배열의 요소 하나에는 Struct1 구조체에 있는

// 변수 name, age 가 같이 들어감

var structArr1: [Struct1] = []

 

var struct1 = Struct1()

var struct2 = Struct1()

struct2.name = "더조은2"

struct2.age = 22

var struct3 = Struct1()

struct3.name = "더조은3"

struct3.age = 33

var struct4 = Struct1()

struct4.name = "더조은4"

struct4.age = 44

var struct5 = Struct1()

struct5.name = "더조은5"

struct5.age = 55

 

structArr1.append(struct1)

structArr1.append(struct2)

structArr1.append(struct3)

structArr1.append(struct4)

structArr1.append(struct5)

 

print("structArr1 : \n\(structArr1)")

 

for element1 in structArr1{

    print(element1.name)

    print(element1.age)

    element1.func1()

}