문제

저는 C#2.0에서 Dictionary를 고유 식별자가 포함된 문자열로 첫 번째 키와 함께 사용하는 경우가 많습니다.

저는 C#3.0+를 배우고 있는데 이제 간단히 List를 사용하고 해당 개체에 대해 LINQ를 수행하여 특정 개체(.where() 사용)를 가져올 수 있는 것 같습니다.

그럼 내가 잘 이해했다면 Dictionary 클래스는 그 목적을 상실한 걸까요?

도움이 되었습니까?

해결책

아니요, 사전은 주어진 키를 다시 가져오는 데 여전히 더 효율적입니다.

원하는 것을 찾으려면 목록을 반복해야 합니다.사전은 조회를 수행합니다.

다른 팁

목록 만있는 경우 LINQ SELEC을 수행하면 목록의 모든 항목을 스캔하여 원하는 것과 비교합니다.

그러나 사전은 원하는 문자열의 해시 코드를 계산합니다 (gethashcode 메소드에 의해 반환). 그런 다음이 값은 문자열을보다 효율적으로 찾는 데 사용됩니다. 이 작동 방식에 대한 자세한 내용은 참조하십시오 위키 백과.

문자열이 몇 개 이상 있으면 초기 (목록) 방법이 고통스럽게 느려집니다.

IMHO 사전 접근 방식은 LINQ보다 훨씬 빠르므로 많은 항목이있는 배열이 있으면 사전을 사용해야합니다.

사전은 해시테이블로 구현됩니다.따라서 조회를 위해 지속적인 시간 액세스를 제공해야 합니다.목록은 동적 배열로 구현되어 선형 시간 액세스를 제공합니다.

기본 데이터 구조를 기반으로 사전은 여전히 ​​더 나은 성능을 제공해야 합니다.

사전의 MSDN 문서

http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

및 목록

http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top