2011-02-08 6 views
3

값이없는 키를 저장/검색/포함 할 수있는 .NET이 있습니까?
Dictionary<string, string>을 사용할 수 있으며 항상 값으로 String.Empty을 저장합니다. 그러나 더 좋은 해결책이 있을까요?IDictionary <TKey, TValue>와 비슷하지만 .NET에서 키 (값은 필요하지 않음) 만 사용할 수 있습니까?

+0

'List '과 같은 것을 의미합니까? – FlyingStreudel

+0

왜 목록을 사용할 수 없습니까 ? 속임수가없는 컬렉션을 찾고 있습니까? – Will

+0

@FlyingStreudel 예,하지만 목록에 키가 있는지 테스트해야합니다. –

답변

11

HashSet<T> 클래스를 사용할 수 있습니다.이 클래스는 집합에 고유 한 값을 저장하기위한 것입니다.

IDictionary{TKey, TValue}의 주요 차이점은 (값을 저장하지 않는다는 것 이외에) HashSet<T>에 동일한 값을 추가 할 수 있으며 이미 존재하는 경우 예외가 발생하지 않는다는 것입니다. 항목이 이미 사전에 존재하는 경우 ArgumentException을 던질 것이다, 시도하고 Add method on IDictionary{TKey, TValue} 반대로, 그 위에 Add method를 호출합니다.

1

하는 경우 당신은 당신이 HashSet 클래스와 함께 갈 수있는 3.5 NET을 사용하고 있습니다. 그렇지 않다면 당신은 자신의 제네릭 clas (어쩌면 List<>에서 상속하고 수표를하십시오).

1

당신은 아마 System.Collections.Generic.HashSet<T>

을 찾고 다음은 MSDN에서 관련 발췌입니다 :

HashSet의 <T> 클래스는 고성능 설정 작업을 제공합니다. 집합 은 중복 요소가없고 그 요소가 특별한 순서가없는 컬렉션입니다.

HashSet의 <T> 객체의 용량 개체 저장할 수있는 소자의 수 이다. 요소가 개체에 추가되면 HashSet <T> 개체의 용량이 자동으로 증가합니다.

는 .NET 프레임 워크 버전 4부터 HashSet의 <T> 클래스 는 ISET <T> 인터페이스를 구현합니다.

0

List<T> 특정 요소가리스트에 존재하지만 다른 같은 HashSet 일하는 것이 제안하고 빠르게 중복을 포함 할 수 없기 때문에 아마도 경우 테스트 할 수있는 Contains 방법이있다. List<T>은 중복 값을 가질 수 있습니다.

관련 문제