HashSet<T> 클래스
- .NET 3.5
- ISet<T> 인터페이스에 기반
- Contains 메서드는 해시 기반 조회(Hash-Based Lookup)를 이용해서 빠르게 실행 됨
- 중복된 원소를 저장하지 않음(수학에서의 집합-Set)
- 색인으로 특정 원소에 접근 할 수 없음
- 키들을 저장하는 해시테이블로 구성
* SymmetricExceptWith 메서드
- 책에는 두 집합에 모두 있는 원소들을 첫 집합에서 제거한다 라고 적혀있어서 좀 햇갈렸음
- 대칭차집합인데, 두 집합에서 두 집합의 교집합을 제외한 합집합이라고 생각하면 될 것 같음
반응형
namespace System.Collections.Generic
{
public class HashSet<T> : ICollection<T>, IEnumerable<T>, IEnumerable, ISerializable, IDeserializationCallback, ISet<T>, IReadOnlyCollection<T>
{
// 생성자
public HashSet();
public HashSet(IEqualityComparer<T> comparer); // 상등 비교자 설정(중복되는 것은 포함하지 않으므로)
public HashSet(IEnumerable<T> collection); // 다른 형식의 집합(또는 컬렉션)을 인자로 받음
public HashSet(IEnumerable<T> collection, IEqualityComparer<T> comparer);
protected HashSet(SerializationInfo info, StreamingContext context);
// 상등 비교자
public IEqualityComparer<T> Comparer { get; }
public static IEqualityComparer<HashSet<T>> CreateSetComparer();
// 집합 정보
public int Count { get; }
// 추가 삭제
public bool Add(T item);
public void Clear();
public bool Remove(T item);
public int RemoveWhere(Predicate<T> match);
// 검색
public bool Contains(T item);
// 집합 연산
public void UnionWith(IEnumerable<T> other); // 합집합, 원소 추가
public void IntersectWith(IEnumerable<T> other); // 교집합, 원소 제거
public void ExceptWith(IEnumerable<T> other); // 차집합, 원소 제거
public void SymmetricExceptWith(IEnumerable<T> other); // 대칭차집합, 원소 제거
// 집합에 대한 질의 수행
public bool IsProperSubsetOf(IEnumerable<T> other); // 진부분집합
public bool IsProperSupersetOf(IEnumerable<T> other); // 진상위집합(진초집합)
public bool IsSubsetOf(IEnumerable<T> other); // 부분집합
public bool IsSupersetOf(IEnumerable<T> other); // 상위집합(초집합)
public bool Overlaps(IEnumerable<T> other); // 겹치는 원소가 있는지 체크
public bool SetEquals(IEnumerable<T> other); // 서로 같은지(포함한 원소가 같은지) 체크
// 복사
public void CopyTo(T[] array, int arrayIndex);
public void CopyTo(T[] array, int arrayIndex, int count);
public void CopyTo(T[] array);
// 열거
public Enumerator GetEnumerator();
public struct Enumerator : IEnumerator<T>, IDisposable, IEnumerator
{
public T Current { get; }
public void Dispose();
public bool MoveNext();
}
// 직렬화
public virtual void GetObjectData(SerializationInfo info, StreamingContext context);
public virtual void OnDeserialization(object sender);
// 공간 정리
public void TrimExcess();
}
}
SortedSet<T> 클래스
- .NET 4.0
- HashSet<T>과 비슷한 특성을 가짐
- 원소들을 정렬된 순서로 저장함
- 적흑 트리를 통하여 구현
// 상등 비교자가 아닌 일반 비교자를 지원하는 생성자 제공
public SortedSet(IComparer<T> comparer);
public SortedSet(IEnumerable<T> collection, IComparer<T> comparer);
// 최소, 최대
public T Max { get; }
public T Min { get; }
// 두 범위 사이의 원소들을 추출
public virtual SortedSet<T> GetViewBetween(T lowerValue, T upperValue);
// 순서를 뒤집음
public IEnumerable<T> Reverse();
반응형
'C#' 카테고리의 다른 글
[C#] SortedDictionary<TKey,TValue>, SortedList<Tkey,TValue>, SortedList (0) | 2023.09.26 |
---|---|
[C#] OrderedDictionary, ListDictionary, HybridDictionary (0) | 2023.09.24 |
[C#] Dictionary<TKey,TValue>, Hashtable (0) | 2023.09.22 |
[C#] IDictionary<TKey,TValue>, IReadOnlyDictionary<TKey,TValue>, IDictionary (0) | 2023.09.20 |
[C#] BitArray (0) | 2023.09.14 |
[C#] Queue<T>, Queue, Stack<T>, Stack (0) | 2023.09.12 |
[C#] LinkedList<T>, LinkedListNode<T> (0) | 2023.09.10 |
[C#] IList<T>, IList (0) | 2023.09.08 |