Set(Abstract data type)
01 중복을 허용하지 않는다.
중복된 값을 허용하지 않으므로 데이터의 유일성을 보장한다. 그러므로 같은 값을 여러번 저장하더라도 실제로 한 번만 저장된다.
02 순서를 보장하지 않는다.
비선형구조이기 때문에 순서의 개념과 인덱스가 존재하지 않는다. 그러므로 Set에 저장된 요소를 인덱스를 사용하여 접근할 수 없다. 값을 추가하거나 삭제할 때는 해당 값을 검색하여 기능을 수행해야한다.
03 Set은 언제 쓰면 좋을까?
중복된 데이터를 제거해야 할 때와 데이터의 존재 여부를 확인해야 할 때이다.
HashSet
해시 테이블을 기반으로 구현된 집합(Set)의 자료구조이다. 이는 중복된 요소를 허용하지 않고 요소의 순서를 보장하지 않는다. 큰 장점으로는 빠르게 요소를 검색할 수 있다.
주요 사용 예시
데이터 중복 피할때, 데이터 검색이 많이 필요할 때, 집합 연산을 수행할 때 등
주요 메서드
01 Add
주어진 요소를 HashSet에 추가한다. 만약 이미 요소가 존재한다면 추가하지 않고 false를 반환한다.
public bool Add (T item);
매개 변수
item : 집합에 추가할 요소
반환
Boolean : 개체가 추가되었으면 true, 이미 있으면 false
코드 예시
HashSet<int> numbers = new HashSet<int>();
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
02 Contains
지정된 요소가 HashSet에 있는지 여부 확인
public bool Contains (T item);
매개변수
item T : 있는지 확인할 요소
반환
Boolean : 존재하면 true, 존재하지 않으면 false 반환
코드 예시
HashSet<int> numbers = new HashSet<int>() { 1, 2, 3, 4 };
Console.WriteLine(numbers.Contains(2));
Console.WriteLine(numbers.Contains(4));
03 Remove
요소 제거
public bool Remove (T item);
매개변수
item T : 제거할 요소
반환
Boolean : 성공적으로 제거한 경우 true, 아닌 경우 false
코드 예시
HashSet<int> numbers = new HashSet<int>() { 1, 2, 3, 4 };
numbers.Remove(2);
04 교집합
현재 HastSet과 지정된 또 다른 컬렉션에 공통으로 포함된 요소만 추출하고 다른 요소들은 제거
public void IntersectWith(IEnumerable<T> other);
매개변수
other : 교집합을 계산할 컬렉션
코드 예시
HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6 };
set1.IntersectWith(set2);
foreach (var item in set1)
{
Console.WriteLine(item); // 출력: 3, 4
}
05 합집합
현재 HashSet에 지정된 커렉션에 있는 요소를 추가한다. 즉 두 개의 집합을 합치는 역할을 한다. 중복된 요소는 추가되지 않는다.
public void UnionWith(IEnumerable<T> other);
매개변수
other : 추가될 요소를 가지고 있는 컬렉션
코드 예시
HashSet<int> set1 = new HashSet<int>() { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5 };
set1.UnionWith(set2);
foreach (var item in set1)
{
Console.WriteLine(item); // 출력: 1, 2, 3, 4, 5
}
'유니티 공부 > C# 문법' 카테고리의 다른 글
C# 문법 - 값 타입(Value type)과 참조 타입(Reference type) (0) | 2024.03.29 |
---|---|
C# - SortedSet, SortedDictonary (기본생성자, IComparer생성자) (0) | 2024.03.17 |
C# - Windows Forms 프로젝트 사용해보기 (0) | 2024.01.20 |
C# 문법 - 확장 메서드(Extension Method) (0) | 2024.01.19 |
C# - await와 async (0) | 2024.01.19 |
댓글