많은 수의 요소가 추가 된 목록을 가지고 있습니다. &은
매초마다 을 삭제했습니다. 목록의 요소를 동시에 찾아야합니다.컬렉션 또는 목록은 너무 많은 추가 및 삭제가 가장 빠릅니까?
또한 검색을 위해 키/값 쌍 비교가 필요합니다.
추가 비율은 삭제보다 빠릅니다.
감사의 말 전진.
많은 수의 요소가 추가 된 목록을 가지고 있습니다. &은
매초마다 을 삭제했습니다. 목록의 요소를 동시에 찾아야합니다.컬렉션 또는 목록은 너무 많은 추가 및 삭제가 가장 빠릅니까?
또한 검색을 위해 키/값 쌍 비교가 필요합니다.
추가 비율은 삭제보다 빠릅니다.
감사의 말 전진.
시도 Dictionary
.
추가, 삭제 및 조회는 거의 O (1)입니다. "검색을위한 키/값 비교"가 무슨 뜻인지 잘 모르겠지만 Dictionary
은 키를 값에 매핑하고 빠른 검색을 수행합니다.
정말로 목록이 필요한 경우 (즉, 요소에 대한 주문), SortedDictionary
이 도움이됩니다.
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 설명서를 참조하십시오.
SortedDictionary는 내 연구에서 항목을 삽입하는 것이 더 느립니다. – Pondidum
@Pondidum :'Dictionary
제네릭이 아닌'Hashtable'을'Dictionary'으로 선호하는 이유가 있습니까? –
LukeH
예 ... C#을 한 이후로 꽤 오래되었습니다. 아직 커피를 먹지 않았습니다. 편집 됨. 감사. – Thomas
SortedDictionary는 주문이 필요한 경우 * 될 수도 안될 수도 있습니다 - 제 답변을 참조하십시오. –