- 다수의 데이터를 다루는 클래스 : 배열, 딕셔너리, 셋, 튜플
- 다수의 데이터를 가변형과 불가변형으로 정의하는 방법
- 다수의 데이터를 다루는 클래스를 선언할 때 var 로 선언 시 가변형으로 선언 후에 내용 수정을 할 수 있다.
- 다수의 데이터를 다루는 클래스를 선언할 때 let 으로 선언 시 불가변형으로 선언 후에 내용 수정을 할 수 없다.
- 배열 : 인덱스 기반의 다수의 데이터를 다루는 클래스
- 타입 선언 : Array<Element>, [Element]
- 생성 방법
- 타입을 선언하여 생성 : var intArray : [int] = [1, 2, 3, 4, 5]
- 타입을 선언하지 않고 생성
- var strArray = ["A", "B", "C"]
- let floatArray = Array<Float>([1.1, 2.2, 3.3])
- 공백 배열을 생성 (반드시 타입 선언이 필요)
- var emptyArray1 = [int]()
- var emptyArray2 = Array<Double>()
- var emptyArray3 : [String] = []
- 배열에 데이터를 추가하는 방법
- append 함수를 이용
- append 함수를 이용하면 추가하려는 데이터는 가장 마지막에 추가된다.
- 사용방법append 함수 사용법
var intArray : [int] = [1, 2, 3]
intArray.append(4) // [1, 2, 3, 4] - insert 함수를 이용
- insert 함수를 이용하면 추가하려는 데이터를 특정 인덱스에 추가된다.
- 사용방법insert 함수 사용법
var intArray : [int] = [1, 2, 3, 5]
intArray.insert(4, at:3) // [1, 2, 3, 4, 5] - + 연산자를 이용
- + 연산자를 이용하면 추가하려는 데이터는 가장 마지막에 추가된다.
- 사용방법+ 연산자 사용법
var intArray : [int] = [1, 2, 3]
intArray += [4, 5] // [1, 2, 3, 4, 5] - 배열에서 데이터를 제거하는 방법
- remove 함수를 이용
- remove 함수를 이용하면 특정 인덱스의 데이터가 제거된다.
- 사용방법remove 함수 사용법
var intArray : [int] = [1, 2, 3]
intArray.remove(at:2) // [1, 2] - removeFirst 함수를 이용
- removeFirst 함수를 이용하면 첫번째 데이터가 제거, 첫번째부터 n개의 데이터가 제거된다.
- 사용방법removeFirst 함수 사용법
var intArray : [int] = [1, 2, 3, 4, 5]
intArray.removeFirst() // [2, 3, 4, 5]
intArray.removeFirst(2) // [4, 5] - removeLast 함수를 이용
- removeLast 함수를 이용하면 마지막 데이터가 제거, 마지막부터 n개의 데이터가 제거된다.
- 사용방법removeLast 함수 사용법
var intArray : [int] = [1, 2, 3, 4, 5]
intArray.removeLast() // [1, 2, 3, 4]
intArray.removeLast(2) // [1, 2] - 배열에서 데이터를 수정하는 방법
- 첨자를 이용
- 첨자를 이용하면 특정 인덱스의 데이터가 수정된다.
- 사용방법첨자를 이용한 사용법
var intArray : [int] = [1, 2, 3, 4, 5]
intArray[2] = 7 // [1, 2, 7, 4, 5] - 범위를 이용
- 범위를 이용하면 특정 인덱스 범위의 데이터가 수정된다.
- 사용방법범위를 이용한 사용법
var intArray : [int] = [1, 2, 3, 4, 5]
intArray[1..2] = [3, 6, 9] // [1, 3, 6, 9, 4, 5] - 배열에서 자주 접하는 에러
- 범위 에러
- 배열은 인덱스 기반으로 다수의 데이터를 다루는 클래스로 인덱스 범위에 주의해야한다. (인덱스는 0부터 시작하고 생성한 데이터의 개수 - 1이 인덱스 범위)
- let 배열에 데이터 추가
- let 으로 선언한 배열은 불가변형으로 해당 배열에 데이터를 넣거나 삭제할 수 없다.
- 타입 에러
- 배열을 Int 형으로 선언 후에 Int 이외에 다른 타입의 데이터를 넣지 않도록 주의해야한다.
- 딕셔너리 : 키 - 값 방식으로 다수의 데이터를 다루는 클래스
- 타입선언 : Dictionary<Key, Value>, [Key, Value]
- 생성방법
- 타입을 선언하여 생성
- var dic1 : Dictionary<int, String> = [1 : "One", 2 : "Two"]
- var dic2 : [String : Int] = ["일" : 1, "이" : 2]
- 타입을 선언하지 않고 생성
- var dic1 = ["1월" : "January", "2월" : "February"] (키 : String - 값 : String)
- 공백 딕셔너리를 생성 (반드시 타입 선언이 필요)
- var emptyDic1 = [int : int]()
- var emptyDic2 : Dictionary<Int : String> = []
- var emptyDic3 : [String : Int] = []
- 딕셔너리에서 데이터를 추가하는 방법
- 딕셔너리에 저장된 키 이외 새로운 키로 값을 설정
- 새로운 키로 값을 설정하면 딕셔너리에 데이터가 추가된다.
- 사용방법새로운 키로 값 설정
var dic1 : Dictionary<String, String> = ["1월" : "January", "2월" : "February"]
dic1["3월"] = "March"
// ["1월" : "January", "2월" : "February", "3월" : "March"] - 딕셔너리에서 데이터를 삭제하는 방법
- removeValue(forKey:) 함수를 이용
- removeValue(forKey:) 함수를 이용하면 해당 키의 데이터가 제거된다.
- 사용방법removeValue(forKey:) 함수 사용법
var dic1 : Dictionary<String, String> = ["1월" : "January", "2월" : "February"]
dic1.removeValue(forKey:"2월") // ["1월" : "January"] - 딕셔너리에서 데이터를 수정하는 방법
- updateValue(_, forKey:) 함수를 이용
- updateValue(_, forKey:) 함수를 이용하면 해당 키의 데이터가 수정된다.
- 사용방법updateValue(forKey:) 함수 사용법
var dic1 : Dictionary<String, String> = ["1월" : "January", "2월" : "February"]
dic1.updateValue("추운 달", forKey:"1월")
// ["1월" : "추운 달", "2월" : "February"] - 첨자를 이용한 수정
- 첨자를 이용하면 첨자 내의 키에 해당하는 데이터가 수정된다.
- 사용방법첨자를 이용한 사용법
var dic1 : Dictionary<String, String> = ["1월" : "January", "2월" : "February"]
dic1["2월"] = "졸업 시즌"
// ["1월" : "January", "2월" : "졸업 시즌"] - 딕셔너리에서 자주 접하는 에러
- 타입 에러
- 생성된 딕셔너리의 키 또는 값의 타입을 반드시 맞추도록 해야한다.
- 셋 : 배열과 동일하게 인덱스 기반의 다수의 데이터를 다루는 클래스로 중복을 허용하지 않는다.
- 타입 선언 : Set<Element>
- 생성방법
- 타입을 선언하여 생성 : var set : Set<String>
- 타입을 선언하지 않으면 배열로 선언이 되므로 반드시 위의 방법으로 생성한다.
- 셋에서 데이터를 추가하는 방법
- insert(_:) 함수를 이용
- insert(_:) 함수를 이용하면 추가하려는 데이터가 셋 내에 없는 경우 추가된다.
- 사용방법insert(_:) 함수 사용법
var set1 : Set<String> = ["Coke", "Juice", "Milk"]
set1.insert("Soda") //["Coke", "Juice", "Milk", "Soda"] - 셋에서 데이터를 삭제하는 방법
- remove(_:) 함수를 이용
- remove(_:) 함수를 이용하면 제거하려는 데이터가 셋 내에 있는 경우 삭제된다.
- 사용방법remove(_:)함수 사용법
var set1 : Set<String> = ["Coke", "Juice", "Milk"]
set1.remove("Milk") //["Coke", "Juice", "Soda"] - 셋에서는 데이터를 수정하는 방법은 없으며, 동일 데이터 추가 시 기존 데이터를 덮어써서 중복을 없앤다.
- 셋에서는 배열, 딕셔너리와 다르게 집합 연산이 가능하다.
- 교집합 : intersection
- 교집합은 아래 그림과 같이 두 집합의 공통 부분을 가져온다.
- 사용방법intersection()함수 사용법
var set1 : Set<Int> = [1, 2, 3]
var set2 : Set<Int> = [2, 3, 4]
let set3 = set1.intersection(set2) // [2, 3] - 합집합 : union
- 합집합은 아래 그림과 같이 두 집합의 모든 데이터를 중복을 제거하여 가져온다.
- 사용방법union()함수 사용법
var set1 : Set<Int> = [1, 2, 3]
var set2 : Set<Int> = [2, 3, 4]
let set3 = set1.union(set2) // [2, 3, 1, 4] - 차집합 : subtracting
- 튜플 : 값 또는 키 - 값으로 다수의 데이터를 다루는 클래스
- 타입 선언 : 별도의 타입 선언이 없다.
- 생성방법
- 값을 이용한 생성 : var tuple = (1, "One", "일")
- 키 - 값을 이용한 생성 : var tuple = (num : 2, eng : "two", kor : "둘")
- 튜플에서 데이터를 수정하는 방법
- 값으로 다수의 데이터를 넣은 경우 인덱스를 이용
- 값만으로 다수의 데이터를 넣은 경우는 인덱스가 부여되어 특정 인덱스의 데이터가 수정된다.
- 사용방법인덱스를 이용한 사용법
var tuple = (1, "One", "일")
var tuple.1 = "Two" //(1, "Two", "일") - 키-값으로 다수의 데이터를 넣은 경우 키 값을 이용
- 키-값으로 다수의 데이터를 넣은 경우는 키 값에 해당하는 데이터가 수정된다.
- 사용방법키를 이용한 사용법
var tuple = (num : 1, eng : "One", kor : "일")
var tuple.num = 2 //(2, "One", "일") - 튜플에서 자주 접하는 에러
- 접근에러
- 값을 이용해서 생성한 데이터의 개수를 넘지 않도록 해야한다.
- 키-값을 이용해서 생성한 데이터에 정의된 키 값으로만 접근해야한다.
- 튜플의 경우 튜플 내에 여러 데이터 타입을 모두 넣을 수 있는 장점이 있지만, 내부에 어떤 타입의 데이터가 있는지 모르기 때문에 다수 데이터를 다룰 때 주로 사용되지는 않는다.