.NET 사전에서 중복 키 관리
사전에서 중복 키를 관리하는 것은 많은 프로그래밍 시나리오에서 일반적인 과제입니다. .NET 기본 클래스 라이브러리에서 사전은 일반적으로 키에 고유성 제약 조건을 적용하여 동일한 키와 연결된 여러 값의 저장을 금지합니다. 그러나 이러한 제한을 극복하고 경우에 따라 중복 키를 수용할 수 있는 방법이 있습니다.
사용자 정의 클래스 사용
한 가지 접근 방식은 다음을 허용하는 사용자 정의 사전 클래스를 만드는 것입니다. 중복 키. 질문에서 언급했듯이 Dictionary
.NET 3.5 이상의 조회 클래스
.NET 3.5 이상을 사용하는 경우 Lookup 클래스는 보다 우아한 솔루션을 제공합니다. Lookup 클래스는 키 컬렉션과 해당 값을 생성하는 일반 유형입니다. 중요한 점은 중복 키를 허용하고 동일한 키와 연결된 값을 그룹화한다는 것입니다.
Enumerable.ToLookup 확장 메서드를 사용하여 Lookup 인스턴스를 생성할 수 있습니다. 이 메소드는 일련의 키-값 쌍을 취하고 해당 키를 기본 키로 하고 값을 해당 컬렉션에 저장한 Lookup을 반환합니다.
var lookup = sequence.ToLookup(keySelector, valueSelector);
예를 들어 다음 코드는 키가 문자열이고 값이 정수 목록인 사전:
var dictionary = new Dictionary<string, List<int>> { { "key1", new List<int> { 1, 2 } }, { "key2", new List<int> { 3, 4 } } }; var lookup = dictionary.ToLookup(x => x.Key, x => x.Value);
Lookup 인스턴스가 있으면 다음을 사용하여 키와 연결된 값에 액세스할 수 있습니다. [] 연산자 또는 GetValues 메서드. [] 연산자는 값 목록을 반환하는 반면 GetValues는 IEnumerable
Lookup 클래스의 제한 사항
Lookup 클래스는 변경할 수 없다는 점에 유의하는 것이 중요합니다. 일단 생성되면 키나 값을 추가하거나 제거할 수 없습니다. 그러나 원하는 변경 사항을 적용하여 새 Lookup 인스턴스를 생성할 수 있습니다. 또한 Lookup 클래스는 동시 수정을 지원하지 않습니다. 동시 액세스가 필요한 경우 ConcurrentDictionary 사용을 고려하세요.
결론
.NET 기본 클래스 라이브러리는 중복을 명시적으로 지원하는 내장 사전 유형을 제공하지 않습니다. 키, .NET 3.5 이상의 Lookup 클래스는 중복 키와 관련된 값을 그룹화하고 검색하기 위한 편리하고 효율적인 솔루션을 제공합니다.
위 내용은 .NET 사전에서 중복 키를 어떻게 관리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!