집합에 데이터를 추가할 때는 insert(_:) 메소드를 사용한다.
메소드는 함께 전달된 인자값을 집합에 추가하지만, 이미 같은 아이템이 저장되어 있을 때는 아무 처리도 하지 않는다.
var genres : Set = ["Classic", "Rock", "Balad"]
genres.insert("Jazz")
// genres = ["Jazz", "Classic", "Rock", "Balad"]
genres.insert("Rock")
// genres = ["Jazz", "Classic", "Rock", "Balad"]
genres.insert("Balad")
// genres = ["Jazz", "Classic", "Rock", "Balad"]
위와 같이 Rock과 Balad 같은 경우는 반복해서 추가하고 있지만, 한 번 추가된 데이터는 몇 번 다시 추가하더라도 처음 상태에서 더는 추가되지 않는다. 이는 집합의 가장 기본적인 특성이다.
집합의 데이터를 삭제할 때는 remove(_:) 메소드를 사용한다.
메소드의 인자값에는 삭제하고자 하는 값이 사용된다.
메소드가 호출되면 집합의 내부 저장소를 검색하여 입력된 인자와 일치하는 데이터를 찾고, 있으면 데이터를 삭제하고 삭제된 값을 반환한다. 그러나 삭제할 값이 집합에 없으면 remove(_:) 메소드는 아무것도 삭제하지 않고 nil을 반환한다.
📝 메소드의 반환값을 활용하면 데이터의 삭제 결과를 손쉽게 판단할 수 있어 후속처리를 하기 쉽다😆
if let removedData = genres.remove("Rock") {
print("데이터 \(removedData) 삭제 완료")
} else {
print("삭제할 값이 집합에 추가되어 있지 않습니다.")
}
// 실행결과
// 데이터 Rock 삭제 완료
개별 값을 입력하여 원하는 데이터를 삭제할 수 있는 remove(_:) 메소드 외에도 스위프트는 집합의 데이터 전체를 삭제할 수 있는 메소드 removeAll()를 제공한다. 이 메소드는 인자값 없이 호출되어 해당 집합의 모든 데이터를 일괄 삭제한다
genres.removeAll() // 집합의 모든 데이터 삭제
if genres.isEmpty {
print("모든 데이터가 삭제되었습니다.")
} else {
print("아직 \(genres.count)개의 데이터가 남아 있습니다.")
}
// 실행결과
// 모든 데이터가 삭제되엇습니다.
이 외에도 스위프트는 집합에 특정 데이터가 있는지를 쉽게 확인할 수 있는 contains(_:) 메소드를 제공한다. 이 메소드는 인자값으로 입력된 데이터를 사용하여 해당 집합 내에서 일치하고 있는 데이터가 있는지 검색하여 있으면 true를, 없으면 false를 반환한다.
var genres : Set = ["Classic", "Rock", "Balad"]
if genres.contains("Rock") {
print("Rock 데이터가 저장되어 있습니다.")
} else {
print("Rocl 데이터가 저장되어 있지 않습니다.")
}
// 실행 결과
// Rock 데이터가 저장되어 있습니다.
'메모장' 카테고리의 다른 글
Swift 튜플 (2) | 2023.03.29 |
---|---|
Swift 집합 연산 (2) | 2023.03.28 |
Swift 집합 순회 탐색 (2) | 2023.03.22 |
Swift 집합 (1) | 2023.03.21 |
Swift 범위 연산자를 이용한 인덱스 참조 (1) | 2023.03.20 |