5.2 집합
집합은 같은 타입의 서로 다른 값을 중복 없이 저장하고자 할 때 사용하는 집단 자료형입니다. 집합은 배열과 매우 유사하비만, 배열을 사용하기 에는 순서가 그다지 중요하지 않은 데이터들이거나 중복 없이 한 번만 저장되어야 하는 데이터들을 다룰 때 배열 대신 사용할 수 있는 자료형입니다.
집합은 내부적으로 해시(Hash) 연산의 결과값을 이용하여 데이터를 저장하므로 집합에 저장할 데이터 타입은 해시 연산을 할 수 있는 타입이어야 합니다. 다시 말해 집합에 저장할 데이터 타입은 반드시 해시값을 계산하는 방법을 제공해야 한다는 뜻입니다. 해시 연산의 결과로 얻을 수 있는 해시값은 일련의 정수로 구성되며, 대상의 값이 같다면 해시 연산에 의한 결과값도 마찬가지로 일치하는 특성이 있습니다.
스위프트에서 제공하는 모든 기본 타입은 기본적으로 해시 연산을 할 수 있으므로 집합의 아이템으로 사용하기에 문제가 없습니다. 만약 스위프트에서 기본으로 제공하는 타입이 아니라 우리가 임의로 만든 타입을 사용하여 집합의 아이템으로 저장하려면, 스위프트 표준 라이브러리에서 제공하는 Hashable 프로토콜을 구현해야 합니다. 포로토콜을 구현한다는 의미를 지금 이해하기는 어려우므로 단지 hashValue라고 불리는 해시값을 만들어 낼 수 있는 기능을 정의해야 한다는 정도로만 이해하도록 합시다.
Last updated