컬렉션 타입[Collection Type]
은 데이터들의 집합이다. Swfit에서는 배열[array], 딕셔너리[dictionary], 세트[set]를 지원하고 있다.
배열[Array]
배열은 같은 타입의 데이터들을 순서에 맞춰 리스트에 저장한다.
//빈 배열 생성
var firstArray: Array<Int> = Array<Int>()
//var firstArray = [Int]() //축약형1
//var firstArray: [Int] = [] //축약형2
//배열에 값 삽입
firstArray.append(0)
firstArray.append(1)
firstArray.append(3)
//배열의 원하는 자리에 값 삽입
firstArray.insert(2, at: 2) //2번 인덱스에 2를 넣는다.
firstArray += [4, 5] //연산자를 사용해 여러 값을 삽입한다.
print(firstArray) //결과: [0,1,2,3,4,5]
//배열에서 특정 값 삭제
firstArray.remove(at: 3) //3번 인덱스의 값을 삭제한다.
print(firstArray) //결과: [0,1,2,4,5]
//배열의 값 수정
firstArray[0] = 1
print(firstArray) //결과: [1,1,2,4,5]
//빈 배열로 만들기
firstArray.removeAll() //배열은 남아있지만 배열 안에 있던 값들은 모두 사라진다.
//배열의 개수
print(firstArray.count) //결과: 0
//기본 값과 함께 배열 생성
var secondArray = ["안","녕","하","세","요"]
print(secondArray) //결과: ["안","녕","하","세","요"]
print(type(of:secondArray)) //결과: Array<String>
//배열에 접근하기
print(secondArray[2...4]) //결과: ["하","세","요"]
print(secondArray[1]) //결과: 녕
//배열의 인덱스 찾기
print(secondArray.index(of: "하")) //결과: Optional(2)
//배열의 인덱스 언랩핑해서 사용하기
if let letter = secondArray.firstIndex(of: "요") {
secondArray[letter] = "여"
}
print(secondArray) //결과: ["안","녕","하","세","여"]
//배열에 어떠한 값이 있는지?
print(secondArray.contains("안")) //결과: true
딕셔너리[Dictionary]
딕셔너리는 키[key]와 값[value]으로 구성된 집합을 순서없이 저장한다.
//딕셔너리 생성
var firstDic: Dictionary<String, Int> = Dictionary<String, Int>()
var dic: [String: Int] = ["첫번째": 1, "두번째": 2] //축약형
print(dic) //순서가 없기 때문에 실행시마다 순서가 다르다.
//딕셔너리 요소 삽입
dic["세번째"]=3
dic["첫번째"]=2 //덮어쓰기
print(dic) //결과: ["두번째": 2, "첫번째": 2, "세번째": 3]
dic.updateValue(200, forKey: "두번째") //덮어쓰기
dic.updateValue(4, forKey: "네번째")
print(dic) //결과: ["첫번째": 2, "두번째": 200, "네번째": 4, "세번째": 3]
//key, value 출력
print(dic.keys) //결과: ["두번째","세번째","첫번째","네번째"]
print(dic.values) //결과: [2,200,4,3]
//딕셔너리 접근
print(dic["첫번째"]) //결과: Optional(2)
print(dic["두번째",default: 20]) //결과: 200
//딕셔너리 원소 개수 확인
print(dic.count) //결과: 4
//딕셔너리가 비었는지 확인
print(dic.isEmpty) //결과: false
//요소 삭제하기
dic["첫번째"] = nil
dic.removeValue(forKey: "두번째")
dic.removeAll() //전체 삭제하기
세트[Set]
세트는 같은 타입의 데이터들을 순서 없이 저장한다. 순서가 없기 때문에 중복된 값을 구분할 수 없다. (=즉, 허용하지 않는다.) 집합으로 사용하기 좋음.
/*
//세트의 기본적인 사용
var firstSet: Set<Int> = Set<Int>()
//var secondSet : set<String> = []
firstSet.insert(3)
firstSet.insert(2)
firstSet.insert(2)
print(firstSet) //결과: [2,3]
firstSet.remove(2)
print(firstSet) //결과:[3]
*/
//기본값을 포함한 세트 생성
var food : Set = ["된장찌개", "계란말이", "파스타", "치킨"]
food.insert("계란찜")
print(food) //결과: ["파스타", "계란찜", "된장찌개", "치킨", "계란말이"]
print(food.count) //결과: 5
print(food.isEmpty) //결과: false
print(food.remove("파스타")) //결과: optional("파스타")
print(food) //결과: ["계란찜", "된장찌개", "치킨", "계란말이"]
var number1 : Set = [1,2,3,4,5]
var number2 : Set = [1,2,6,7,10]
//number1과 number2의 교집합
print(number1.intersection(number2)) //결과: [2,1]
//합집합
print(number1.union(number2)) //결과: [6,10,1,4,2,7,3,5]
//차집합
print(number1.subtracting(number2)) //결과: [4,3,5]
//number1과 number2의 합집합을 바로 새로 선언하는 세트에 초기화
var numberUnion: Set<Int> = number1.union(number2)
print(numberUnion) //결과: [6,10,1,4,2,7,3,5]
//number2가 number1의 부분집합인지?
print(number2.isSubset(of:numberUnion)) true
'iOS > Swift이론' 카테고리의 다른 글
[iOS]Swift 구조체 (0) | 2022.03.22 |
---|---|
[iOS]Swift 함수 (0) | 2022.03.17 |
[iOS]Swift 반복문 : for-in, while, repeat-while (1) | 2022.03.03 |
[iOS]Swift 개념! Optional이란? (0) | 2022.01.06 |
Swift 문법 공부를 위한 웹사이트 (0) | 2022.01.05 |