05. 컬렉션 타입(Array, Dictionary, Set)
생각해보기
다음과 같은 경우에는 각각 어떤 컬렉션 타입을, 상수/변수 선언 중 어떤 것을 사용하면 유용할지 생각해 봅시다.
- 영어 알파벳 소문자를 모아두는 컬렉션
- 책의 제목과 저자 정리를 위한 컬렉션
- Boostcamp iOS 수강생 명부 작성을 위한 컬렉션
컬렉션 타입
- Array : 순서가 있는 리스트 컬렉션
- Dictionary : 'Key'와 'Value'의 쌍으로 이루어진 컬렉션
- Set : 순서가 없고, 맴버가 유일한 컬렉션
Array
- 맴버가 순서(Index)를 가진 리스트 형태의 컬렉션 타입
- 여러가지 리터럴 문법을 활용할 수 있어 표현 방법이 다양
선언 및 생성
var integers: Array<Int> = Array<Int>()
// 위와 동일한 표현
var integers: Array<Int> = [Int]()
var integers: Array<Int> = []
var integers: [Int] = Array<int>()
var intergers: [Int] = [Int]()
var integers: [Int] = []
var integers = [Int]()
활용
맴버 추가
integers.append(1)
integers.append(100)
// Int 타입이 아니므로 Array에 추가할 수 없습니다
// integers.append(101.1)
print(integer)
[1, 100]
맴버 포함 여부 확인
print(integers.contains(100)
print(integers.contains(99)
true
false
맴버 교체
integers[0] = 99
맴버 삭제
integers.remove(at:0)
integers.removeLast()
integers.removeAll()
맴버 수 확인
print(integers.count)
// 인덱스를 벗어나 접근하려면 익셉션 런타임 오류발생
// integers[0]
0
불변 Array
let immutableArray = [1, 2, 3]
// 수정이 불가능한 Array이므로 맴버를 추가할거나 삭제할 수 없습니다
// immutableArray.append(4)
// immutableArray.removeAll()
Dictionary
- 'Key'와 'Value'의 쌍으로 이루어진 컬렉션 타입
- Array와 비슷하게 여러가지 리터럴 문법을 활용할 수 있어 표현 방법이 다양함
선언 및 생성
// Key가 Srting 타입이고 Value가 Any인 빈 Dictionary 생성
var anyDictionary: Dictionary<String, Any> = [String: Any]()
// 위와 동일한 표현
var anyDictionary: Dictionary<String, Any> = Dictionary<String, Any>()
var anyDictionary: Dictionary<String, Any> = [:]
var anyDictionary: [String: Any] = Dictionary<String, Any>()
var anyDictionary: [String: Any] = [String: Any]()
var anyDictionary: [String: Any] = [:]
var anyDictionary = [String: Any]()
활용
Key에 해당하는 값 할당
anyDictionary["someKey"] = "value"
anyDictionary["anotherKey"] = 100
print(anyDictionary)
["somekey": "value", "anotherKey": 100]
Key에 해당하는 값 변경
anyDictionary["someKey"] = "dictionary"
print(anyDictionary)
["someKey": "dictionary", "anotherKey": 100]
Key에 해당하는 값 제거
anyDictionary.removeValue(forKey: "anotherKey")
anyDictionary["someKey"] = nil
print(anyDictionary)
[:]
불변 Dictionary
let emptyDictionary:[String:String] = [:]
let initializedDictionary:[String:String] = ["name":"yagom", "gender":"male"]
// 불변 Dictionary이므로 값 변경 불가
// emptyDictionary["Key"] = "value"
// 키에 해당하는 값을 다른 변수나 상수에 할당하고자 할 때는 옵셔널과 타입 캐스팅 파트에서 다룸
// "name"이라는 키에 해당하는 값이 없을 수 있으므로 String 타입의 값이 나올 것이라는 보장이 없음
// 컴파일 오류가 발생
// let someValue: String = initializedDictionary["neme"]
Set
- 중복되지 않는 맴버가 순서없이 존재하는 컬렉션
- Array, Dictionary와 다르게 축약형이 존재하지 않음
선언 및 생성
var integerSet: Set<Int> = Set<Int>
// insert: 새로운 맴버 입력
// 동일한 값은 여러번 insert해도 한번만 저장됨
integerSet.insert(1)
integerSet.insert(99)
integerSet.insert(99)
integerSet.insert(99)
integerSet.insert(100)
print(integerSet)
{100, 99, 1}
맴버 포함 여부 확인
print(integerSet.contains(1))
print(integerSet.contains(2))
true
false
맴버 삭제
integerSet.remove(99)
integerSet.removeFirst()
멈버 개수
integerSet.count
활용
// 멤버의 유일성이 보장되기 때문에 집합 연산에 활용하면 유용함
let setA: Set<Int> = [1, 2, 3, 4, 5]
let setB: Set<Int> = [3, 4, 5, 6, 7]
합집합
let union: Set<Int> = setA.union(setB)
print(union)
[2, 3, 5, 6, 7, 3, 1]
합집합 오름차순 정렬
let sortedUnion: [Int] = union.sorted()
print(sortedUnion)
[1, 2, 3, 4, 5, 6, 7]
교집합
let intersection: Set<Int> = setA.intersection(setB)
print(intersection)
[5, 3, 4]
차집합
let subtracting: Set<Int> = setA.subtracting(setB)
print(subtracting)
[2, 1]
내 생각
- Array : 한가지 타입으로 여러개의 값(중복을 허용)을 순서가 있게 저장하고 싶은 때
- Dictionary : 'Key'와 'Value' 형태로 1대1 매칭을 필요로 할 때
- Set : 한가지 타입으로 여러개의 값(중복을 허용하지 않음)을 순서가 없게 저장하고 싶을 때
Author And Source
이 문제에 관하여(05. 컬렉션 타입(Array, Dictionary, Set)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@thddudgns97/05.-컬렉션-타입Array-Dictionary-Set
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
다음과 같은 경우에는 각각 어떤 컬렉션 타입을, 상수/변수 선언 중 어떤 것을 사용하면 유용할지 생각해 봅시다.
- 영어 알파벳 소문자를 모아두는 컬렉션
- 책의 제목과 저자 정리를 위한 컬렉션
- Boostcamp iOS 수강생 명부 작성을 위한 컬렉션
- Array : 순서가 있는 리스트 컬렉션
- Dictionary : 'Key'와 'Value'의 쌍으로 이루어진 컬렉션
- Set : 순서가 없고, 맴버가 유일한 컬렉션
Array
- 맴버가 순서(Index)를 가진 리스트 형태의 컬렉션 타입
- 여러가지 리터럴 문법을 활용할 수 있어 표현 방법이 다양
선언 및 생성
var integers: Array<Int> = Array<Int>()
// 위와 동일한 표현
var integers: Array<Int> = [Int]()
var integers: Array<Int> = []
var integers: [Int] = Array<int>()
var intergers: [Int] = [Int]()
var integers: [Int] = []
var integers = [Int]()
활용
맴버 추가
integers.append(1)
integers.append(100)
// Int 타입이 아니므로 Array에 추가할 수 없습니다
// integers.append(101.1)
print(integer)
[1, 100]
맴버 포함 여부 확인
print(integers.contains(100)
print(integers.contains(99)
true
false
맴버 교체
integers[0] = 99
맴버 삭제
integers.remove(at:0)
integers.removeLast()
integers.removeAll()
맴버 수 확인
print(integers.count)
// 인덱스를 벗어나 접근하려면 익셉션 런타임 오류발생
// integers[0]
0
불변 Array
let immutableArray = [1, 2, 3]
// 수정이 불가능한 Array이므로 맴버를 추가할거나 삭제할 수 없습니다
// immutableArray.append(4)
// immutableArray.removeAll()
Dictionary
- 'Key'와 'Value'의 쌍으로 이루어진 컬렉션 타입
- Array와 비슷하게 여러가지 리터럴 문법을 활용할 수 있어 표현 방법이 다양함
선언 및 생성
// Key가 Srting 타입이고 Value가 Any인 빈 Dictionary 생성
var anyDictionary: Dictionary<String, Any> = [String: Any]()
// 위와 동일한 표현
var anyDictionary: Dictionary<String, Any> = Dictionary<String, Any>()
var anyDictionary: Dictionary<String, Any> = [:]
var anyDictionary: [String: Any] = Dictionary<String, Any>()
var anyDictionary: [String: Any] = [String: Any]()
var anyDictionary: [String: Any] = [:]
var anyDictionary = [String: Any]()
활용
Key에 해당하는 값 할당
anyDictionary["someKey"] = "value"
anyDictionary["anotherKey"] = 100
print(anyDictionary)
["somekey": "value", "anotherKey": 100]
Key에 해당하는 값 변경
anyDictionary["someKey"] = "dictionary"
print(anyDictionary)
["someKey": "dictionary", "anotherKey": 100]
Key에 해당하는 값 제거
anyDictionary.removeValue(forKey: "anotherKey")
anyDictionary["someKey"] = nil
print(anyDictionary)
[:]
불변 Dictionary
let emptyDictionary:[String:String] = [:]
let initializedDictionary:[String:String] = ["name":"yagom", "gender":"male"]
// 불변 Dictionary이므로 값 변경 불가
// emptyDictionary["Key"] = "value"
// 키에 해당하는 값을 다른 변수나 상수에 할당하고자 할 때는 옵셔널과 타입 캐스팅 파트에서 다룸
// "name"이라는 키에 해당하는 값이 없을 수 있으므로 String 타입의 값이 나올 것이라는 보장이 없음
// 컴파일 오류가 발생
// let someValue: String = initializedDictionary["neme"]
Set
- 중복되지 않는 맴버가 순서없이 존재하는 컬렉션
- Array, Dictionary와 다르게 축약형이 존재하지 않음
선언 및 생성
var integerSet: Set<Int> = Set<Int>
// insert: 새로운 맴버 입력
// 동일한 값은 여러번 insert해도 한번만 저장됨
integerSet.insert(1)
integerSet.insert(99)
integerSet.insert(99)
integerSet.insert(99)
integerSet.insert(100)
print(integerSet)
{100, 99, 1}
맴버 포함 여부 확인
print(integerSet.contains(1))
print(integerSet.contains(2))
true
false
맴버 삭제
integerSet.remove(99)
integerSet.removeFirst()
멈버 개수
integerSet.count
활용
// 멤버의 유일성이 보장되기 때문에 집합 연산에 활용하면 유용함
let setA: Set<Int> = [1, 2, 3, 4, 5]
let setB: Set<Int> = [3, 4, 5, 6, 7]
합집합
let union: Set<Int> = setA.union(setB)
print(union)
[2, 3, 5, 6, 7, 3, 1]
합집합 오름차순 정렬
let sortedUnion: [Int] = union.sorted()
print(sortedUnion)
[1, 2, 3, 4, 5, 6, 7]
교집합
let intersection: Set<Int> = setA.intersection(setB)
print(intersection)
[5, 3, 4]
차집합
let subtracting: Set<Int> = setA.subtracting(setB)
print(subtracting)
[2, 1]
내 생각
- Array : 한가지 타입으로 여러개의 값(중복을 허용)을 순서가 있게 저장하고 싶은 때
- Dictionary : 'Key'와 'Value' 형태로 1대1 매칭을 필요로 할 때
- Set : 한가지 타입으로 여러개의 값(중복을 허용하지 않음)을 순서가 없게 저장하고 싶을 때
Author And Source
이 문제에 관하여(05. 컬렉션 타입(Array, Dictionary, Set)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@thddudgns97/05.-컬렉션-타입Array-Dictionary-Set
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(05. 컬렉션 타입(Array, Dictionary, Set)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@thddudgns97/05.-컬렉션-타입Array-Dictionary-Set저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)