5.2.1 집합의 정의
집합을 정의할 때는 초기값을 사용하여 바로 정의하거나 빈 집합을 선언하고 초기화하는 과정을 거쳐 정의할 수 있습니다. 먼저 초기값을 사용하여 집합을 정의하는 방법을 알아봅시다.
초기값을 사용하여 집합을 정의할 때, 값으로 사용되는 데이터는 배열과 동일합니다. 하지만 단순히 배열 데이터를 사용하여 정의하면 컴파일러는 데이터들을 집합이 아닌 배열로 인식합니다. 따라서 집합 타입이라는 것을 컴파일러에 직접 알려주기 위해 타입 어노테이션 Set을 기재해야 합니다.
var genres: Set = ["Classic", "Rock", "Balad"]
위의 경우에는 초기값이 지정되었기 때문에 집합에 저장할 타입을 명시하지 않았지만, 만약 빈 배열을 사용하여 초기화할 경우에는 저장할 타입을 명시하여야 합니다
var genres: Set<String> = []
위의 빈 배열로 초기화된 집합에 데이터를 추가하기 위해서는 insert를 사용할 수 있습니다
genres.insert("Classic")
genres.insert("Rock")
genres.insert("Balad")
이 코드가 실행되면 집합 genres에는 세 개의 아이템이 추가되며, 집합의 크기는 3이 됩니다. 집합의 크기는 count 변수를 통해 확인할 수 있습니다.
빈 집합인지를 확인할 때는 count가 0인지를 판단할 수도 있겠지만, isEmpty를 사용하여 명확하게 빈 집합인지 여부를 알 수 있습니다. 아래 코드를 참고하시면 좋습니다.
// 빈 집합인지 체크
if genres.isEmpty {
print("집합이 비어있습니다")
} else {
print("집합에는 현재 \(genres.count)개의 아이템이 저장되어 있습니다")
}
이 상태에서는 else문의 코드들이 실행되게 됩니다. 현재 genres.count는 3일 것입니다. 이 상황에서 만약 아래 코드가 실행된다면 genres.count 의 값은 달라질까요?
genres.insert("Balad")
이미 genres라는 집합에는 Balad라는 데이터가 들어있기 때문에 같은 데이터를 insert했을 때는 집합 안으로 들어가지 않을 것입니다. 따라서 genres.count의 값은 여전히 3입니다.
Last updated