HashSet<T> 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
값 집합을 나타냅니다.
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::IReadOnlyCollection<T>, System::Collections::Generic::ISet<T>
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::IReadOnlyCollection<T>, System::Collections::Generic::IReadOnlySet<T>, System::Collections::Generic::ISet<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::IReadOnlyCollection<T>, System::Collections::Generic::ISet<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::ISet<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::ISet<T>
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.ISet<T>
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.IReadOnlySet<T>, System.Collections.Generic.ISet<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.ISet<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.ISet<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.ISet<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.ISet<T>
type HashSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface IReadOnlyCollection<'T>
interface ISet<'T>
type HashSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface IReadOnlyCollection<'T>
interface ISet<'T>
interface IReadOnlySet<'T>
interface IDeserializationCallback
interface ISerializable
type HashSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface IReadOnlyCollection<'T>
interface ISet<'T>
interface IDeserializationCallback
interface ISerializable
[<System.Serializable>]
type HashSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface ISerializable
interface IDeserializationCallback
[<System.Serializable>]
type HashSet<'T> = class
interface ISerializable
interface IDeserializationCallback
interface ISet<'T>
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
[<System.Serializable>]
type HashSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface ISerializable
interface IDeserializationCallback
interface ISet<'T>
interface IReadOnlyCollection<'T>
type HashSet<'T> = class
interface ISet<'T>
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
Public Class HashSet(Of T)
Implements ICollection(Of T), IEnumerable(Of T), IReadOnlyCollection(Of T), ISet(Of T)
Public Class HashSet(Of T)
Implements ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), IReadOnlyCollection(Of T), IReadOnlySet(Of T), ISerializable, ISet(Of T)
Public Class HashSet(Of T)
Implements ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), IReadOnlyCollection(Of T), ISerializable, ISet(Of T)
Public Class HashSet(Of T)
Implements ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), ISerializable
Public Class HashSet(Of T)
Implements ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), ISerializable, ISet(Of T)
Public Class HashSet(Of T)
Implements ICollection(Of T), IEnumerable(Of T), ISet(Of T)
형식 매개 변수
- T
해시 집합의 요소 형식입니다.
- 상속
-
HashSet<T>
- 특성
- 구현
예제
다음 예제에서는 서로 다른 두 집합을 병합하는 방법을 보여 줍니다. 이 예제에서는 두 개체 HashSet<T> 를 만들고 각각 짝수 및 홀수로 채웁니다. 세 번째 HashSet<T> 개체는 짝수를 포함하는 집합에서 만들어집니다. 그런 다음 세 번째 집합에 UnionWith 홀수 집합을 추가하는 메서드를 호출합니다.
HashSet<int> evenNumbers = new HashSet<int>();
HashSet<int> oddNumbers = new HashSet<int>();
for (int i = 0; i < 5; i++)
{
// Populate numbers with just even numbers.
evenNumbers.Add(i * 2);
// Populate oddNumbers with just odd numbers.
oddNumbers.Add((i * 2) + 1);
}
Console.Write("evenNumbers contains {0} elements: ", evenNumbers.Count);
DisplaySet(evenNumbers);
Console.Write("oddNumbers contains {0} elements: ", oddNumbers.Count);
DisplaySet(oddNumbers);
// Create a new HashSet populated with even numbers.
HashSet<int> numbers = new HashSet<int>(evenNumbers);
Console.WriteLine("numbers UnionWith oddNumbers...");
numbers.UnionWith(oddNumbers);
Console.Write("numbers contains {0} elements: ", numbers.Count);
DisplaySet(numbers);
void DisplaySet(HashSet<int> collection)
{
Console.Write("{");
foreach (int i in collection)
{
Console.Write(" {0}", i);
}
Console.WriteLine(" }");
}
/* This example produces output similar to the following:
* evenNumbers contains 5 elements: { 0 2 4 6 8 }
* oddNumbers contains 5 elements: { 1 3 5 7 9 }
* numbers UnionWith oddNumbers...
* numbers contains 10 elements: { 0 2 4 6 8 1 3 5 7 9 }
*/
let displaySet (collection: HashSet<int>) =
printf "{"
for i in collection do
printf $" {i}"
printfn " }"
let evenNumbers = HashSet<int>()
let oddNumbers = HashSet<int>()
for i = 0 to 4 do
// Populate numbers with just even numbers.
evenNumbers.Add(i * 2) |> ignore
// Populate oddNumbers with just odd numbers.
oddNumbers.Add(i * 2 + 1) |> ignore
printf $"evenNumbers contains {evenNumbers.Count} elements: "
displaySet evenNumbers
printf $"oddNumbers contains {oddNumbers.Count} elements: "
displaySet oddNumbers
// Create a new HashSet populated with even numbers.
let numbers = HashSet<int> evenNumbers
printfn "numbers UnionWith oddNumbers..."
numbers.UnionWith oddNumbers
printf $"numbers contains {numbers.Count} elements: "
displaySet numbers
// This example produces output similar to the following:
// evenNumbers contains 5 elements: { 0 2 4 6 8 }
// oddNumbers contains 5 elements: { 1 3 5 7 9 }
// numbers UnionWith oddNumbers...
// numbers contains 10 elements: { 0 2 4 6 8 1 3 5 7 9 }
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim evenNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
Dim oddNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
For i As Integer = 0 To 4
' Populate evenNumbers with only even numbers.
evenNumbers.Add(i * 2)
' Populate oddNumbers with only odd numbers.
oddNumbers.Add((i * 2) + 1)
Next i
Console.Write("evenNumbers contains {0} elements: ", evenNumbers.Count)
DisplaySet(evenNumbers)
Console.Write("oddNumbers contains {0} elements: ", oddNumbers.Count)
DisplaySet(oddNumbers)
' Create a new HashSet populated with even numbers.
Dim numbers As HashSet(Of Integer) = New HashSet(Of Integer)(evenNumbers)
Console.WriteLine("numbers UnionWith oddNumbers...")
numbers.UnionWith(oddNumbers)
Console.Write("numbers contains {0} elements: ", numbers.Count)
DisplaySet(numbers)
End Sub
Private Shared Sub DisplaySet(ByVal collection As HashSet(Of Integer))
Console.Write("{")
For Each i As Integer In collection
Console.Write(" {0}", i)
Next i
Console.WriteLine(" }")
End Sub
End Class
' This example produces output similar to the following:
' evenNumbers contains 5 elements: { 0 2 4 6 8 }
' oddNumbers contains 5 elements: { 1 3 5 7 9 }
' numbers UnionWith oddNumbers...
' numbers contains 10 elements: { 0 2 4 6 8 1 3 5 7 9 }
설명
클래스는 HashSet<T> 고성능 집합 작업을 제공합니다. 집합은 중복 요소가 없고 요소가 특정 순서가 없는 컬렉션입니다.
개체의 HashSet<T> 용량은 개체가 보유할 수 있는 요소의 수입니다. HashSet<T> 개체에 요소가 추가되면 개체의 용량이 자동으로 증가합니다.
클래스는 HashSet<T> 수학 집합의 모델을 기반으로 하며 또는 Dictionary<TKey,TValue> 컬렉션의 Hashtable 키에 액세스하는 것과 유사한 고성능 집합 작업을 제공합니다. 간단히 말하면 클래스를 HashSet<T> 값이 없는 컬렉션으로 Dictionary<TKey,TValue> 간주할 수 있습니다.
HashSet<T> 컬렉션이 정렬되지 않았으므로 중복 요소를 포함할 수 없습니다. 순서 또는 요소 중복이 애플리케이션의 성능보다 더 중요한 경우 메서드와 함께 클래스를 List<T>Sort 사용하는 것이 좋습니다.
HashSet<T> 는 집합 더하기(공용 구조체) 및 집합 빼기와 같은 많은 수학 집합 연산을 제공합니다. 다음 표에서는 제공된 HashSet<T> 연산과 해당 수학 연산을 나열합니다.
| HashSet 작업 | 그에 상응하는 수학 |
|---|---|
| UnionWith | 공용 구조체 또는 집합 추가 |
| IntersectWith | 교차점 |
| ExceptWith | 빼기 설정 |
| SymmetricExceptWith | 대칭 차이 |
나열된 집합 작업 외에도 클래스는 집합 같음, HashSet<T> 집합 겹침 및 집합이 다른 집합의 하위 집합인지 또는 상위 집합인지를 결정하는 메서드를 제공합니다.
HashSet<T> 클래스가 ISet<T> 인터페이스를 구현합니다.
HashSet 및 LINQ 집합 작업
LINQ는 Distinct, Union, Intersect, 및 Except 집합 작업에 대한 액세스를 IEnumerable 또는 IQueryable 인터페이스를 구현하는 모든 데이터 원본에 제공합니다.
HashSet<T>는 더 크고 강력한 집합 작업 컬렉션을 제공합니다. 예를 들어 다음과 HashSet<T> 같은 IsSubsetOfIsSupersetOf비교를 제공합니다.
LINQ 집합 작업과 HashSet<T> 작업 간의 주요 차이점은 LINQ 집합 작업이 항상 새 IEnumerable<T> 컬렉션을 반환하는 반면 HashSet<T> 동일한 메서드는 현재 컬렉션을 수정한다는 것입니다.
일반적으로 새 집합을 만들어야 하거나 애플리케이션이 제공된 집합 작업에만 액세스해야 하는 경우 모든 IEnumerable<T> 컬렉션 또는 배열에서 LINQ 집합 작업을 사용하는 것으로 충분합니다. 그러나 애플리케이션에 추가 집합 작업에 대한 액세스가 필요하거나 새 컬렉션을 만드는 것이 바람직하지 않거나 필요하지 않은 경우 클래스를 HashSet<T> 사용합니다.
다음 표에서는 HashSet<T> 작업과 해당 LINQ 집합 작업을 보여줍니다.
| HashSet 작업 | LINQ 동등한 것 |
|---|---|
| UnionWith | Union |
| IntersectWith | Intersect |
| ExceptWith | Except |
| 제공되지 않습니다. | Distinct |
| SymmetricExceptWith | 제공되지 않습니다. |
| Overlaps | 제공되지 않습니다. |
| IsSubsetOf | 제공되지 않습니다. |
| IsProperSubsetOf | 제공되지 않습니다. |
| IsSupersetOf | 제공되지 않습니다. |
| IsProperSupersetOf | 제공되지 않습니다. |
| SetEquals | 제공되지 않습니다. |
생성자
| Name | Description |
|---|---|
| HashSet<T>() |
비어 있고 집합 형식에 HashSet<T> 대한 기본 같음 비교자를 사용하는 클래스의 새 인스턴스를 초기화합니다. |
| HashSet<T>(IEnumerable<T>, IEqualityComparer<T>) |
집합 형식에 HashSet<T> 대해 지정된 같음 비교자를 사용하고, 지정된 컬렉션에서 복사된 요소를 포함하고, 복사된 요소 수를 수용할 수 있는 충분한 용량을 갖는 클래스의 새 인스턴스를 초기화합니다. |
| HashSet<T>(IEnumerable<T>) |
집합 형식에 HashSet<T> 대한 기본 같음 비교자를 사용하고, 지정된 컬렉션에서 복사된 요소를 포함하고, 복사된 요소 수를 수용할 수 있는 충분한 용량을 갖는 클래스의 새 인스턴스를 초기화합니다. |
| HashSet<T>(IEqualityComparer<T>) |
비어 있는 클래스의 새 인스턴스를 HashSet<T> 초기화하고 집합 형식에 대해 지정된 같음 비교자를 사용합니다. |
| HashSet<T>(Int32, IEqualityComparer<T>) |
집합 형식에 대해 지정된 같음 비교자를 사용하고 요소를 수용할 HashSet<T> 수 있는 충분한 용량을 갖는 클래스의 새 인스턴스 |
| HashSet<T>(Int32) |
비어 있지만 항목에 대한 예약된 공간이 있고 집합 형식에 HashSet<T> 대한 |
| HashSet<T>(SerializationInfo, StreamingContext) |
사용되지 않음.
직렬화된 데이터를 사용하여 클래스의 새 인스턴스를 HashSet<T> 초기화합니다. |
속성
| Name | Description |
|---|---|
| Capacity |
크기 조정 없이 내부 데이터 구조에서 보유할 수 있는 요소의 총 수를 가져옵니다. |
| Comparer |
집합의 IEqualityComparer<T> 값에 대한 같음을 확인하는 데 사용되는 개체를 가져옵니다. |
| Count |
집합에 포함된 요소의 수를 가져옵니다. |
메서드
| Name | Description |
|---|---|
| Add(T) |
지정된 요소를 집합에 추가합니다. |
| Clear() |
개체에서 HashSet<T> 모든 요소를 제거합니다. |
| Contains(T) |
개체에 지정된 요소가 포함되어 있는지 여부를 HashSet<T> 확인합니다. |
| CopyTo(T[], Int32, Int32) |
지정된 배열 인덱스에서 시작하여 개체의 HashSet<T> 지정된 요소 수를 배열에 복사합니다. |
| CopyTo(T[], Int32) |
지정된 배열 인덱스에서 시작하여 개체의 HashSet<T> 요소를 배열에 복사합니다. |
| CopyTo(T[]) |
개체의 HashSet<T> 요소를 배열에 복사합니다. |
| CreateSetComparer() |
개체의 IEqualityComparer 같음 테스트에 사용할 수 있는 개체를 HashSet<T> 반환합니다. |
| EnsureCapacity(Int32) |
이 해시 집합이 백업 스토리지를 추가로 확장하지 않고 지정된 개수의 요소를 보유할 수 있는지 확인합니다. |
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| ExceptWith(IEnumerable<T>) |
현재 HashSet<T> 개체에서 지정된 컬렉션의 모든 요소를 제거합니다. |
| GetAlternateLookup<TAlternate>() |
대신를 사용하여 현재 HashSet<T> 에 대한 작업을 수행하는 데 사용할 수 있는 |
| GetEnumerator() |
개체를 반복하는 열거자를 반환합니다 HashSet<T> . |
| GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
사용되지 않음.
인터페이스를 ISerializable 구현하고 개체를 serialize HashSet<T> 하는 데 필요한 데이터를 반환합니다. |
| GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
| IntersectWith(IEnumerable<T>) |
해당 개체 및 지정된 컬렉션에 있는 요소만 포함하도록 현재 HashSet<T> 개체를 수정합니다. |
| IsProperSubsetOf(IEnumerable<T>) |
개체가 지정된 컬렉션의 적절한 하위 집합인지 여부를 HashSet<T> 확인합니다. |
| IsProperSupersetOf(IEnumerable<T>) |
개체가 지정된 컬렉션의 적절한 상위 집합인지 여부를 HashSet<T> 확인합니다. |
| IsSubsetOf(IEnumerable<T>) |
개체가 지정된 컬렉션의 하위 집합인지 여부를 HashSet<T> 확인합니다. |
| IsSupersetOf(IEnumerable<T>) |
개체가 지정된 컬렉션의 상위 집합인지 여부를 HashSet<T> 확인합니다. |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| OnDeserialization(Object) |
역직렬화가 ISerializable 완료되면 인터페이스를 구현하고 역직렬화 이벤트를 발생합니다. |
| Overlaps(IEnumerable<T>) |
현재 HashSet<T> 개체와 지정된 컬렉션이 공통 요소를 공유하는지 여부를 결정합니다. |
| Remove(T) |
개체에서 HashSet<T> 지정된 요소를 제거합니다. |
| RemoveWhere(Predicate<T>) |
컬렉션에서 HashSet<T> 지정된 조건자가 정의한 조건과 일치하는 모든 요소를 제거합니다. |
| SetEquals(IEnumerable<T>) |
개체와 지정된 컬렉션에 동일한 요소가 포함되어 있는지 여부를 HashSet<T> 확인합니다. |
| SymmetricExceptWith(IEnumerable<T>) |
해당 개체 또는 지정된 컬렉션에 있는 요소만 포함하도록 현재 HashSet<T> 개체를 수정하지만 둘 다 포함하지는 않습니다. |
| ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
| TrimExcess() |
개체의 용량을 HashSet<T> 포함된 실제 요소 수로 설정하고, 근처의 구현별 값으로 반올림합니다. |
| TrimExcess(Int32) |
개체의 용량을 HashSet<T> 지정된 수의 항목으로 설정하고, 근처의 구현별 값으로 반올림합니다. |
| TryGetAlternateLookup<TAlternate>(HashSet<T>.AlternateLookup<TAlternate>) |
대신를 사용하여 현재 HashSet<T> 에 대한 작업을 수행하는 데 사용할 수 있는 |
| TryGetValue(T, T) |
지정된 값 집합을 검색하고 찾은 값(있는 경우)을 반환합니다. |
| UnionWith(IEnumerable<T>) |
자체, 지정된 컬렉션 또는 둘 다에 있는 모든 요소를 포함하도록 현재 HashSet<T> 개체를 수정합니다. |
명시적 인터페이스 구현
| Name | Description |
|---|---|
| ICollection<T>.Add(T) |
개체에 ICollection<T> 항목을 추가합니다. |
| ICollection<T>.IsReadOnly |
컬렉션이 읽기 전용인지 여부를 나타내는 값을 가져옵니다. |
| IEnumerable.GetEnumerator() |
컬렉션을 반복하는 열거자를 반환합니다. |
| IEnumerable<T>.GetEnumerator() |
컬렉션을 반복하는 열거자를 반환합니다. |