Post

Swift - 집합(Set)이란? (1)

Swift - 집합(Set)이란? (1)

집합(Set)이란?

  • 배열과 매우 유사하지만 순서가 없고 중복을 허용하지 않는 집단 자료형
  • 데이터를 저장할 때 내부적으로 해시 알고리즘을 통해 저장하고 해시값이 같은 데이터는 저장하지 않음.

선언 및 초기화 방식에는 배열과 마찬가지로 정적, 동적으로 나뉨.

정적 선언 및 초기화

1
var ex: Set = ["서울", "대구", "부산"]
  • 정적으로 값을 넣을 때는 배열과 같은 형태로 사용하지만, 타입 어노테이션을 통해 Set 이라는 것을 명시해줘야함.

Set은 집합 구조체임.

동적 선언 및 초기화

1
var ex: Set<String> = Set()

데이터 삽입

  • insert(): Set에 데이터를 삽입할 때 사용

예시

1
2
3
4
var ex: Set<String> = Set()

ex.insert("서울")
ex.insert("대구")

집합 순회 탐색

  • SetArray(배열)처럼 순회 탐색이 가능함
  • 주로 반복문을 통해 처리

예시

1
2
3
4
5
6
7
8
9
var ex: Set<String> = Set()

ex.insert("서울")
ex.insert("부산")
ex.insert("대구")

for element in ex{
    print("element : \(element)")
}

결과

1
2
3
element : 부산
element : 서울
element : 대구

집합은 순서를 보장하지 않기 때문에 출력되는 순서가 달라질 수 있음.

데이터 제거

  • remove(): Set에 존재하는 데이터 제거
    • 삭제된 데이터를 반환해주며 만약 삭제된 데이터가 없을 경우 nil을 반환
  • removeAll(): Set에 존재하는 모든 데이터 제거

예시

1
2
3
4
5
6
7
var ex: Set<String> = Set()
ex.insert("서울")
ex.insert("부산")

ex.remove("서울")

ex.removeAll()

집합 길이, 빈 집합 여부 확인

  • count 속성: 집합의 길이 반환
  • isEmpty: 빈 집합일 경우 true 아니면 false

예시

1
2
3
4
5
6
7
8
9
10
var ex: Set<String> = Set()
ex.insert("서울")
ex.insert("부산")
print(ex.count)

ex.removeAll()
if ex.isEmpty{
    
    print("빈 집합")
}

결과

1
2
2
빈 집합

특정 데이터가 집합에 속해있는지 확인

  • contains(): 매개 변수로 넘어온 값이 Set에 포함되어 있는지 확인

예시

1
2
3
4
5
6
7
8
9
var ex: Set<String> = Set()
ex.insert("서울")
ex.insert("부산")

if ex.contains("서울"){
    print("포함됨")
}else{
    print("포함되지 않음")
}

결과

1
포함됨

데이터 정렬

  • sorted(): 데이터를 오름차순으로 정렬하여 배열 형태로 반환
    • 다른 정렬 조건을 추가해야할 경우 클로저를 통해 추가 가능

예시

1
2
3
4
5
var ex: Set = ["서울", "부산", "대구"]

for element in ex.sorted(){
    print("element : \(element)")
}

결과

1
2
3
element : 대구
element : 부산
element : 서울
This post is licensed under CC BY 4.0 by the author.