먼저, 기본 가정에서 정확합니다. 일반 사전은 열거 순서를 보장하지 않습니다.
두 번째로 SortedDictionary
을 사용자 정의 IComparer
경로로 지정하는 데주의해야합니다. 비교자는 키 정렬과 컬렉션 정렬에 사용됩니다. 즉, 추가 순서에 따라 IComparer
을 사용하면 키 값으로 SortedDictionary
에서 요소를 검색하는 데 어려움을 겪을 수 있습니다. 정렬 된 사전의 백업 인 트리에서 손실 될 수 있습니다.
C5 일반 클래스 라이브러리 경로를 기꺼이 사용하려는 경우 T가 자체 입력되는 경우 HashedLinkedList<KeyValuePair<T>>
또는 HashedLinkedList<T>
에서 좋은 마일리지를 얻을 수 있습니다. 키를 조작하여 해시 코드를 생성하는 IEqualityComparer
을 만들 수 있습니다. 그런 다음 실제 값을 검색, 당신은 저장 T
을 찾을 것입니다 (키가 설정되어 아마도 전용) 프로토 타입 X와 Find(ref T x)
를 사용하고 반환 할 수 O (1) 시간 대 O (로그에 참조로 n)이고 SortedDictionary
입니다. 뿐만 아니라 LinkedList
의 지원을 받으면 추가 순서로 열거 할 수 있으며 C5의 IDirectedEnumerable
을 통해 원하는 방향을 지정할 수 있습니다.
희망이 있습니다.
"키"순서가 아닙니다. 나는 추가 명령을 받고있다. GetEnumerator를 상속하고 재정의하는 것이 중요하지만 –