배열 (Array)

쏘스야·2023년 4월 4일
0

ios 개발자의 첫걸음

목록 보기
32/61
/**
 컬렉션
 1. Array : 데이터를 순서대로 저장하는 컬렉션
 2. Dictionary : 데이터를 키와 값으로 하나의 쌍으로 만들어 관리하는 순서가 없는 컬렉션
 3. Set : 수학에서의 집합과 비슷한 연산을 제공하는, 순서가 없는 컬렉션
 
 */

/**
 Array
 대괄호
 */

var numArray = [1, 2, 3, 4, 5, 5, 1]

let numArray1 = [20, 2, 7, 4, 5, 7]

var stringArray = ["Apple","Swift","IOS","Hello"]

// 정식문법
let strArry1: Array<String> = []
// 단축문법
let strArray2: [String] = []


//let emptyArray1 = [] // 빈배열만 생성하면 에러(타입추론이 안됨.) - 타입을 지정해줘야함.

let emptyArray2: Array<Int> = Array<Int>() // 빈배열 생성

let emptyArray3: [Int] = [Int]()

print(emptyArray3)


numArray.count // 요소의 갯수를 세기
numArray.isEmpty

numArray.contains(1)
numArray.contains(8)

numArray.randomElement() // 랜덤으로 배열의 요소중에 하나를 추출하는 것

numArray.swapAt(0, 5) // 데이터 순서 변경 0 -> 5

// 배열의 각 요소에 대한 접근

stringArray[0]
stringArray[1]
stringArray[2]
stringArray[3]

stringArray[1] = "Soya"
print(stringArray)

stringArray.first  // 리턴값 String? ====> 빈 배열이라면 nil 리턴
stringArray.last


stringArray.startIndex
stringArray.endIndex

stringArray[stringArray.startIndex]
stringArray[stringArray.endIndex - 1]

stringArray[stringArray.index(1, offsetBy: 2)]

stringArray.firstIndex(of: "IOS")
stringArray.lastIndex(of: "IOS")

if let index = stringArray.firstIndex(of: "c"){
    print(index)
    print(stringArray[index])
}


/**
 배열 다루기(insert)
 
 */

/**
 삽입하기 (insert)
 */
var alphabet = ["A","B","C","D","E","F"]

//alphabet.insert("G", at: 6)
alphabet.insert(contentsOf: ["G","H"], at: 6)


/**
 교체하기 (replace)
 
 */

// 교체
alphabet[0] = "a"
print(alphabet)

// 교체
alphabet[0...1] = ["x","y"]
print(alphabet)

// 삭제
alphabet[0...2] = []
print(alphabet)

// 교체
alphabet.replaceSubrange(0...2, with: ["a","b","c"])

print(alphabet)

/**
 추가하기 (append)
 */

alphabet += ["H"]

alphabet.append("H")
alphabet.append(contentsOf: ["H","I"])


/**
 삭제하기 (remove)
 */
alphabet[0...2] = []
alphabet.remove(at: 2)

alphabet.removeSubrange(0...2)


alphabet = ["A","B","C","D","E","F"]

alphabet.removeFirst()
alphabet.removeFirst(2)

alphabet.removeLast()
alphabet.removeLast(2)


alphabet = ["A","B","C","D","E","F"]

// 빈 배열에 사용하면 -> 에러
alphabet.removeFirst() // 리턴형이 String
alphabet.removeLast() // 리턴형이 String

alphabet.removeAll() // 모두 제거
alphabet.removeAll(keepingCapacity: true)   // 저장공간을 일단은 보관해 둠.(안의 데이터만 일단 날림)


var nums = [1,3,5,7,4,2,6,8,6,9,12,0]

// 배열 자체를 정렬
nums.sort()

// 배열 자체를 정렬시키지않고 새로운 배열을 정렬시킨다.
var newArray = nums.sorted()
// 반대로 정렬
nums.reverse()

var newArray1 = nums.reversed()

//
nums.shuffle()

var newArray2 = nums.shuffled()


nums.sorted().reversed()


/**
 배열의 비교
 
 */

let a = ["A","B","C"]
let b = ["a","b","c"]

a == b
a != b


/**
 활용
 */
// 인덱스를 찾고 제거하는 방식
var puppy1 = ["p","u","p","p","y"]

if let lastIndexOfP = puppy1.lastIndex(of: "p") {
    puppy1.remove(at: lastIndexOfP)
}
print(puppy1)

//
if !nums.isEmpty{
    print("\(nums.count) element(s)")
} else {
    print("empty array")
}

var data = [[1,2,3],
            [4,5,6],
            [7,8,9]]

data[0][2]


/**
 반복문과의 결합
 */


nums.sort()

for i in nums {
    print(i)
}

/**
 enumerate : 열거하다.
 */

for tuple in nums.enumerated() {
//    print(tuple)    // (offset: 0, element: 0)
    print("\(tuple.0) - \(tuple.1)")
//    print("\(tuple.offset) - \(tuple.element)")
}

for (index, word) in nums.enumerated() {
    print("\(index) - \(word)")
}

for (index, value) in nums.enumerated().reversed() {
    print("\(index) - \(value)")
}
profile
개발자

0개의 댓글