/**
컬렉션
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)")
}