2009-12-07 2 views

답변

2

시도 Dictionary.

추가, 삭제 및 조회는 거의 O (1)입니다. "검색을위한 키/값 비교"가 무슨 뜻인지 잘 모르겠지만 Dictionary은 키를 값에 매핑하고 빠른 검색을 수행합니다.

정말로 목록이 필요한 경우 (즉, 요소에 대한 주문), SortedDictionary이 도움이됩니다.

+0

제네릭이 아닌'Hashtable'을'Dictionary '으로 선호하는 이유가 있습니까? – LukeH

+0

예 ... C#을 한 이후로 꽤 오래되었습니다. 아직 커피를 먹지 않았습니다. 편집 됨. 감사. – Thomas

+0

SortedDictionary는 주문이 필요한 경우 * 될 수도 안될 수도 있습니다 - 제 답변을 참조하십시오. –

2

Dictionary<TKey, TValue>은 일반적으로 매우 빠르게 O (1) 삽입 및 삭제됩니다. 기본적으로 O (1)입니다. 구조 조정이 필요하지 않으면 O (n)입니다.

"큰 수"의 요소가 삽입 및 삭제되는 것으로 간주되는 것은 무엇입니까?

Dictionary<TKey, TValue>는 표준 .NET에서 데이터 구조 "나는 키/값의 매핑이 필요"어떤면에 있음을 감안할 때, 나는 그것을보고하기 전에 필요에 따라 충분히 수행 여부를 확인하기 위해 적어도 기준을 거라고 더 난해한 것.

그러나 질문에서 "목록"참조를 사용하면 주문해야 할 수도 있음을 알 수 있습니다. 실제로 그런가요? 즉, 추가 된 순서대로 항목을 반복 할 수 있어야합니까? 그렇다면 자신의 (Linked)List<T>/Dictionary<TKey, TValue> 구성을 작성해야합니다 (적절한주의가 필요함).

SortedList<TKey, TValue>SortedDictionary<TKey, TValue>동안는 삽입 순서 아니라, 보장 된 순서를 제공 않습니다 - 그것은 순서입니다. 당신이 작성하는 경우 즉, : 다음

sortedDictionary["c"] = ...; 
sortedDictionary["a"] = ...; 
sortedDictionary["b"] = ...; 

과 반복, 당신은 순서 "A", "B", "C"의 항목을 얻을 수 있습니다.

이름에서 생각한 것과는 달리,이 두 유형은 모두 사전 (즉, 키/값 매핑)에 있습니다. 서로 다른 성능 특성을 제공하는 방금 구현 된 것입니다. 자세한 내용은 MSDN 설명서를 참조하십시오.

+0

SortedDictionary는 내 연구에서 항목을 삽입하는 것이 더 느립니다. – Pondidum

+0

@Pondidum :'Dictionary '보다 확실히 느리다. 정렬 순서를 유지해야한다는 본질이다. –

관련 문제