언어/swift

[swift] 복습2 - Array, Dictionary, Set

플래시🦥 2023. 6. 29.
반응형

Array, Dictionary, Set을 간단하게 말하자면 아래처럼 표현할 수 있다. 

 

     Array - 순서가 있는 리스트 컬렉션

     Dictionary - '키'와 '값'의 쌍으로 이루어진 컬렉션

     Set - 순서가 없고, 멤버가 유일한 컬렉션

 

Array

Array사용방법은 

가변 Array는 " var 변수이름 : Array<변수타입> = Array <Int>() " 

불변 Array는 " let 변수이름  = [1,2,3,4] " 이다. 

var integers :Array<Int> = Array<Int>() //Int형 Array
let immutableArray = [1,2,3]	//불변

위와 같은 방법 한가지만 사용할 수 있는 것이 아니라, 아래처럼 여러  가지 방법으로 표현이 가능하다, 

var integers: Array<Int> = [Int]()
var integers: Array<Int> = []
var integers: [Int] = Array<Int>()
var integers: [Int] = [Int]()
var integers: [Int] = []
var integers = [Int]()

변수의 타입을 지정해 줄 때는 Array<타입> = [타입]()을 사용해야 하고

그 뒤에는  Array<타입> = [타입]() = [] 이렇게 사용할 수 있는 것 같다. 

 

 Array에 데이터를 집어넣기 위해서는 append()를 사용하면 된다. 

integers.append(1)
integers.append(10)

 

값을 수정하고 싶다면 아래처럼 하면 된다. 

integers[0]=9

 

Array의 개수를 알고 싶다면. count를

 print("integer's count : \(integers.count)")
 print("integer contains 10? \(integers.contains(10))")

특정한 인덱스의 원소를 삭제하고 싶다면 remove(at:인덱스), 마지막 인덱스를 사용하고 싶다면 .removeLast() , 모든 원소를 삭제 하고 싶다면. removeAll()을 사용하면 된다. 

 integers.remove(at: 0)  //해당 인덱스 원소 삭제
 integers.removeLast()   //마지막 원소 삭제
 integers.removeAll()	//모든 원소 삭제

 

Dictionary 

Dictionary 사용 방법은

가변 : " var 변수이름 : Dictionary<키타입, 값 타입> = [키타입 : 값 타입]() " 

불변 : "  let initializedDictionary: [키타입: 값 타입] = ["name": "yagom", "gender": "male"] " 이다. 

 var anyDictionary : Dictionary<String, Any> = [String:Any]()
 let initializedDictionary: [String: String] = ["name": "yagom", "gender": "male"]

Dictionary도 표현할 수 있는 다양한 방법이 있다. 

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] = [:]	//비어있는 Dictionary
var anyDictionary = [String: Any]()

타입 선언 : Dictionary <String, Any> = [String : Any]

Dictionary <string, any> = [String : Any]</string, any> = [:]

 

데이터를 추가하는 방법은 Dictionary변수[키] = 값 이다. 

anyDictionary["someKey"] = "value"
anyDictionary["anotherKey"] = 100

같은 방법으로 값을 수정해 줄 수 있다. 

 

값이나 키를 삭제하는 방법은 아래처럼 해주면 된다. 

anyDictionary["someKey"] = nil  //someKey에 해당하는 값을 없애주고 싶을 때 removeValue와 유사
anyDictionary.removeValue(forKey: "someKey")   //특정 키 삭제 가능

 

 

Set

 

Set 사용 방법은 " var 변수이름 : Set<타입> = Set <타입>() "이다.

 var integerSet: Set<Int> = Set<Int>()

새로운 데이터를 추가하려면. insert(??)를 사용하면 된다. 

Set은 동일한 값은 여러번 추가해도 한 번만 저장이 된다.

integerSet.insert(1)
integerSet.insert(99) 
integerSet.insert(99)   //integerSet은 하나의 99를 갖는다. 
integerSet.insert(100)

 

contains를 사용해서 멤버 포함 여부 확인할 수 있다. true/false를 반환한다. 

print(integerSet.contains(1)
print(integerSet.contains(2))

remove를 사용하여  멤버 삭제를 할 수 있다. 

integerSet.remove(99)
integerSet.removeFirst()	//첫번째 멤버 삭제

count로  멤버 개수를 확인할 수 있다. 

print("integerSet.count = \(integerSet.count)")

 

Set은 멤버의 유일성이 보장되기 때문에 집합 연산에 활용할 수 있다. 

let setA: Set<Int> = [1, 2, 3, 4, 5]
let setB: Set<Int> = [3, 4, 5, 6, 7]

setA와 setB가 있을 때 

 

둘의 합집합을 구하기 위해서는 A.union(B) 하면 된다. 

let union: Set<Int> = setA.union(setB)
print(union) // [2, 4, 5, 6, 7, 3, 1]

 

둘의 합집합 오름차순 정렬은 합집합을 구한 것에 .sorted()하면된다. 

let sortedUnion: [Int] = union.sorted()
print(sortedUnion) // [1, 2, 3, 4, 5, 6, 7]

둘의 교집합은 A.intersection(B)이다. 

let intersection: Set<Int> = setA.intersection(setB)
print(intersection) // [5, 3, 4]

둘의  차집합은 A.subtracting(B) 이다. 

let subtracting: Set<Int> = setA.subtracting(setB)
print(subtracting) // [2, 1]

 

728x90
반응형

'언어 > swift' 카테고리의 다른 글

[swift] 복습2 - Any, AnyObject, nil  (0) 2023.06.16
[swift] 복습1 - 상수와 변수 그리고 데이터타입  (0) 2023.06.16

댓글