programing

C# 집합을 설정하시겠습니까?

i4 2023. 5. 21. 10:56
반응형

C# 집합을 설정하시겠습니까?

자바와 동등한 좋은 것이 있는지 아는 사람이 있습니까?SetC#에서 수집?저는 당신이 어느 정도 세트를 모방할 수 있다는 것을 압니다.Dictionary또는HashTable가치관을 무시하는 방식으로 말입니다. 하지만 그것은 매우 우아한 방법이 아닙니다.

.NET 3.5를 사용하는 경우 를 사용할 수 있습니다..NET이 Java만큼 세트에 적합하지 않은 것은 사실입니다.

Wintellect Power Collections도 도움이 될 수 있습니다.

해시 집합 사용:

HashSet(Of T) 클래스는 고성능 세트 작업을 제공합니다.집합은 중복 요소를 포함하지 않고 요소의 순서가 특정하지 않은 집합입니다.

HashSet(Of T) 개체의 용량은 개체가 보유할 수 있는 요소 수입니다.HashSet(Of T) 개체의 용량은 요소가 개체에 추가됨에 따라 자동으로 증가합니다.

HashSet(Of T) 클래스는 수학적 집합 모델을 기반으로 하며 Dictionary(Of) 키에 액세스하는 것과 유사한 고성능 집합 연산을 제공합니다.TKey, TValue) 또는 해시 테이블 컬렉션입니다.간단히 말해, HashSet(Of T) 클래스는 사전(Of)으로 생각할 수 있습니다.TKey, TValue) 값이 없는 컬렉션입니다.

HashSet(Of T) 컬렉션이 정렬되지 않아 중복 요소를 포함할 수 없습니다...

.NET 4.0 이상을 사용하는 경우:

정렬이 필요한 경우 를 사용합니다.그렇지 않은 경우에는 다음과 같이 사용합니다.O(1)검색 및 조작 작업에 사용할 수 있습니다.반면에.SortedSet<T>이라O(log n)검색 및 조작 작업에 사용할 수 있습니다.

저는 이에시를 사용합니다.컬렉션 http://www.codeproject.com/KB/recipes/sets.aspx

많은 OSS 프로젝트에 사용되고 있습니다. NHibernate에서 처음 접했습니다.

저는 주변에 포장지를 사용합니다.Dictionary<T, object>값에 null을 저장합니다.이것은 O(1) 키에 대한 추가, 조회 및 제거를 제공하며, 모든 의도와 목적이 집합처럼 작용합니다.

CodePlex에서 PowerCollections를 살펴보십시오.세트 및 순서 집합 외에도 데큐, 다중 사전, 가방, 주문 가방, 주문 사전 및 순서 다중 사전과 같은 유용한 컬렉션 유형이 몇 가지 있습니다.

더 많은 컬렉션을 위해 C5 일반 컬렉션 라이브러리도 있습니다.

이것이 오래된 스레드라는 것을 알지만, 같은 문제에 부딪혔고 동일한 시드가 주어졌을 때 GetHashCode()가 다른 코드를 반환했기 때문에 HashSet가 매우 신뢰할 수 없다는 것을 알게 되었습니다.그래서 저는 그냥 목록을 사용하고 이렇게 추가 방법을 숨기는 것이 어떨까 생각했습니다.

public class UniqueList<T> : List<T>
{
    public new void Add(T obj)
    {
        if(!Contains(obj))
        {
            base.Add(obj);
        }
    }
}

리스트에서는 동등성을 결정하는 데만 동등성 방법을 사용하므로 T 유형에 대해 동등성 방법을 정의하여 원하는 결과를 얻을 수 있습니다.

언급URL : https://stackoverflow.com/questions/183685/c-sharp-set-collection

반응형