Set(집합)

쏘스야·2023년 4월 4일
0

ios 개발자의 첫걸음

목록 보기
34/61
/**
 Set(집합)
 */
var set: Set = [1,2,4,5,6]
print(set)
// 순서가 보장이 안됨.
// 생성시 타입을 선언해야한다.
// 각 요소는 유일한 값 - Hashable, 중복안됨
// 검색속도가 아주 빠름, 순서는 없음.
// 집합의 수학적인 개념을 다룰 때 사용
// 검색속도가 빨라야할 때 사용
// 중복해서 저장하지 않았을 때

// 기본문법
let set1: Set<Int> = [1,2,4,5,6]

// 단축문법
let set2: Set = [1,2,4,5,6]

/**
 빈 Set의 생성
 */

let emptySet1: Set<Int> = []
let emptySet2 = Set<Int>()

/**
 Set의 기본 기능
 */

set.count
set.isEmpty

set.contains(1)
set.randomElement()


/**
 업데이트 (update) - 삽입/교체/추가 하기
 */

set.update(with: 1) // Int? 기존의 1을 준다.

set.update(with: 7) // 새로운 요소가 추가되면 ===> 리턴 nil
set



/**
 삭제(제거) 하기
 */
var stringSet: Set<String> = ["Apple","Banana","City","Swift"]

stringSet.remove("Swift")
stringSet

stringSet.remove("Steve") // nil 반환


stringSet.removeAll()
stringSet.removeAll(keepingCapacity: true)


/**
 Set의 활용
 */

/**
 비교
 */
var a1: Set = [1,2,3,4,5,6,7,8,9]
var b1: Set = [1,3,5,7,9]
var c1: Set = [2,4,6,8,10]
var d1: Set = [1,7,5,9,3]

a1 == b1
a1 != b1

b1 == d1

 

a1 = [1,2,3,4,5,6,7,8,9]
b1 = [1,3,5,7,9]
c1 = [2,4,6,8,10]
d1 = [1,7,5,9,3]

// 부분집합
b1.isSubset(of: a1) // 부분집합 여부
b1.isStrictSubset(of: a1) // 진부분집합 여부


// 상위집합
a1.isSuperset(of: b1) // 상위집합 여부
a1.isStrictSuperset(of: b1) // 진상위집합 여부

// 서로소 여부 (완전 다른 집합이니?)
d1.isDisjoint(with: c1)

/**
 합집합
 */
var unionSet = b1.union(c1)
b1
//b1.formUnion(c1) // 원본을 변경 (b1)

/**
 교집합
 */

var interSet = a1.intersection(b1)

//a1.formIntersection(b1) // 원본변경

/**
 차집합
 */
a1.subtracting(b1)

//a1.subtract(b1) // 원경변경

/**
 대칭차집합
 */

var symmetricSet = a1.symmetricDifference(b1)


//a1.formSymmetricDifference(b1) // 원본 변경


/**
 반복문과 결합
 
 */

let newSet: Set = [1, 2, 3]

for num in newSet {
    print(num)
}


var nowArray: Array = newSet.sorted() // sorted 는 set 자체를 변경하는것이 아니다.

profile
개발자

0개의 댓글