Array
배열은 같은 타입의 데이터를 일렬로 나열한 후 순서대로 저장하는 형태의 컬렉션 타입이다.
# 각기 다른위치에 같은값이 들어갈 수 있음.
실무에서 많이 쓰는 컬렉션 타입이며, Objectvie C 때부터 기본 Array 가 아닌 MutailbleArray 로 많이 쓰고 있다.
Swift의 Array에서는 Array 와 Mutable의 구분이 없어졌으며, let 과 var 형식에 의해 수정가능, 수정불가능으로 구분된다.
처음에 Objective C 에서 MutableArray를 위주로 사용하였을때, 자꾸 어색한 감이 없지 않아있었으나
실제로 사용해보면 생각보다 편하게 사용할 수 있다.
// 배열
// 1. 배열의 생성
var names1:Array<String> = ["jiwook", "sujung", "ari"]
// 1-1. 위와 동일한 표현방법 [String] == Array<String> 같은 표현입니다.
var names2:[String] = ["jiwook", "sujung", "ari"]
var emptyArray:[Any] = [Any]() // Any 형의 빈배열 생성가능
// 배열 간략사용기
print(names1[0]) // jiwook
names1.removeFirst() // 첫번재 데이터 삭제가능
names1.removeLast() // 마지막 데이터 삭제가능
names1.insert("New Jiwook", at: 0) // 원하는 위치에 데이터 추가 가능
names1.append("New Ari") // Array의 마지막에 데이터 추가가능
names1.removeAll() // Array 전체 비워주기.
| cs |
Dictionary
딕셔너리는 요소들의 순서 없이 Key - Value 로 쌍으로 이뤄지는 컬렉션 타입니다.
딕셔너리의 key 값은 중복으로 사용할 수 없다.
Array와 맞찬가지로 실무에서는 거의 한쌍을 이룰 정도로 많이 사용하고 있는 형식이다.
Swift의 Dictionary에서는 Array와 마친가지로 Mutable의 구분이 없어졌으며, let 과 var 형식에 의해 수정가능, 수정불가능으로 구분된다.
보통 네트워크 통신시 서버API Response 값으로
리스트 형식의 화면을 구성할때 Array(Dictionary) 형식으로 전달해 주기 때문에
이를 Model에 치환해서 사용하곤 한다.
// 딕셔너리
// 2. 딕셔너리의 생성
var ageAndName1:Dictionary<String, Int> = Dictionary<String, Int>()
// 2-1. 위와 동일한 표현방법 [String:Int] == Dictionary<String, Int> 같은 표현입니다.
var ageAndName2:[String:Int] = [String:Int]()
// 초기값 으로 생성 가능
var emptyDictionary:[String:Int] = ["jiwook":31, "sujung":28, "ari":0]
print(emptyDictionary["jiwook"]!) // 31
print(emptyDictionary["empty"]) // nil
print(emptyDictionary["empty", default: 0]) // 해당값이 없으면 기본값 설정가능
print(emptyDictionary["empty"] ?? 0) // 옵셔널을 통한 디폴트값 설정 가능
emptyDictionary.removeValue(forKey: "jiwook") // jiwook 의 키값을 가진 값을 삭제
| cs |
Set
같은 타입의 데이터를 순서없이 하나의 묶음으로 저장하는 형태의 컬렉션 타입이다.
순서가 중요하지 않거나 각 요소가 유일한 값이어야 하는 경우 사용된다.
필자는 주되게 사용한적은 별로 없으며, 실무에서는 보통 중복제거 및 정렬을 할 때 사용했다.
// 세트
// 3. 세트의 생성
var namesSet1:Set<String> = Set<String>()
var namesSet2:Set<String> = []
// Array와 마찬가지로 [] 를 사용함. (단 중복이 허용되지 않음)
var namesSet:Set<String> = ["jiwook", "sujung", "ari", "jiwook"]
print(namesSet.count) // 3
// 3-1. 세트의 활용 (집합연산)
let firstSet:Set<String> = ["jiwook", "sujung", "ari", "Mr.Kim"]
let secondSet:Set<String> = ["jiwook", "sujung1", "ari", "Mr.Lee", "Mr.An"]
// 1. 교집합 : ["ari", "jiwook"]
let intersectSet:Set<String> = firstSet.intersection(secondSet)
// 2. 여집합 : ["Mr.Lee", "sujung1", "Mr.Kim", "sujung", "Mr.An"]
let symmetricDiffSet:Set<String> = firstSet.symmetricDifference(secondSet)
// 3. 합집합 : ["ari", "Mr.Kim", "sujung1", "jiwook", "Mr.An", "Mr.Lee", "sujung"]
let unionSet:Set<String> = firstSet.union(secondSet)
// 4. 차집합 : ["Mr.Kim", "sujung"]
let subtractSet:Set<String> = firstSet.subtracting(secondSet)
// #. 정렬 : ["Mr.An", "Mr.Kim", "Mr.Lee", "ari", "jiwook", "sujung", "sujung1"]
print(unionSet.sorted())
| cs |
댓글
댓글 쓰기