HashTable,HashSet,Dictionary 의 차이 점 요약
4915 단어 C#Dictionary
1.HashTable
해시 표(HashTable)는 키/값 이 맞 는 집합 을 표시 합 니 다..NET Framework 에서 Hashtable 은 System.collections 네 임 스페이스 에서 제공 하 는 용기 입 니 다.key-value 와 유사 한 키 쌍 을 처리 하고 표현 하 는 데 사 용 됩 니 다.그 중에서 key 는 보통 빠 른 검색 을 할 수 있 고 key 는 대소 문 자 를 구분 합 니 다.value 는 key 에 대응 하 는 값 을 저장 하 는 데 사 용 됩 니 다.Hashtable 에서 key-value 키 쌍 은 모두 object 형식 이기 때문에 Hashtable 은 모든 종류의 keyvalue 키 쌍 을 지원 할 수 있 으 며,null 대상 이 아 닌 모든 키 나 값 으로 사용 할 수 있 습 니 다.
해시 테이블 에 키/키 쌍 을 추가 합 니 다:HashtableObject.add(key,);
해시 표 에서 키/키 쌍 을 제거 합 니 다:HashtableObject.Remove(key);
해시 표 에서 모든 요 소 를 제거 합 니 다:HashtableObject.clear();
해시 표 에 특정 키 가 포함 되 어 있 는 지 판단 하기:HashtableObject.Contains(key);
2.HashSet
HashSet
HashSet
a.HashSet
b.HashSet
3.Dictionary
Dictionary 는 키 와 값 의 집합 을 표시 합 니 다.
Dictionary
그 자 체 는 집합 기능 이 있어 서 때때로 그것 을 배열 로 볼 수 있다.
그의 구 조 는 이렇다.Dictionary
그의 특징 은 저장 대상 이[key]값 과 일일이 대응 하 는 이 범 형 에 저장 해 야 한 다 는 것 이다.
일정한[key]를 통 해 대응 하 는 값 을 찾 을 수 있 습 니 다.
4.HashTable 과 Dictionary 의 차이 점:
(1).HashTable 은 범 형 을 지원 하지 않 고 Dictionary 는 범 형 을 지원 합 니 다.
(2).Hashtable 요 소 는 Object 형식 에 속 하기 때문에 저장 하거나 검색 값 형식 을 검색 할 때 보통 포장 과 상 자 를 뜯 는 작업 이 발생 하기 때문에 유형 전환 작업 이 필요 할 수 있 습 니 다.또한 int,float 등 값 유형 에 대해 서 는 포장 등 작업 을 해 야 합 니 다.시간 이 많이 걸 리 지 않 습 니 다.
(3).단일 스 레 드 프로그램 에서 Dictionary 를 사용 하 는 것 을 추천 합 니 다.일반적인 장점 이 있 고 읽 기 속도 가 빠 르 며 용량 이용 이 더욱 충분 합 니 다.다 중 스 레 드 프로그램 에 서 는 Hashtable 을 사용 하 는 것 을 추천 합 니 다.기본 Hashtable 은 단일 스 레 드 기록 을 허용 합 니 다.다 중 스 레 드 읽 기,Hashtable 에 대해 Synchronized()방법 을 추가 로 호출 하면 완전 스 레 드 안전 유형 을 얻 을 수 있 습 니 다.Dictionary 는 스 레 드 가 아 닌 안전 하기 때문에 lock 문 구 를 사용 하여 보호 해 야 합 니 다.효율 이 크게 떨 어 집 니 다.
(4)코드 테스트 를 통 해 키 는 정수 형 Dictionary 의 효율 이 Hashtable 보다 빠 르 고 키 가 문자열 형 이 라면 Dictionary 의 효율 은 Hashtable 보다 빠 르 지 않다 는 것 을 발견 했다.
static void IntMethod()
{
int count = 1000000;
Dictionary<int, int> dictionary = new Dictionary<int, int>();
Hashtable hashtable = new Hashtable();
for (int i = 0; i < count; i++)
{
dictionary.Add(i,i);
hashtable.Add(i,i);
}
Stopwatch stopwatch = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
int value = dictionary[i];
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
stopwatch = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
object value = hashtable[i];
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
}
static void MethodString()
{
int count = 1000000;
Dictionary<string, string> dictionary = new Dictionary<string, string>();
Hashtable hashtable=new Hashtable();
for (int i = 0; i < count; i++)
{
dictionary.Add(i.ToString(),"aaa");
hashtable.Add(i.ToString(),"aaa");
}
Stopwatch stopwatch = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
string value=dictionary[i.ToString()];
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
stopwatch = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
object value = hashtable[i.ToString()];
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
}
오늘 면접 에서 가장 큰 수확 은 이상 의 것 을 정리 하 는 것 이 아니 라 표면적 인 것 을 추구 하지 말 라 는 것 을 깨 달 았 습 니 다.어떤 기능 을 완성 하기 위해 서가 아니 라 특정한 기술 을 배 우 는 것 입 니 다.그 본질 을 깊이 이해 하고 기초 가 중요 합 니 다.세 명의 면접 관 은 모두 매우 뛰 어 납 니 다.제 가 평소에 사용 하지 않 는 것 을 많이 이 야 기 했 습 니 다.그들 과 함께 교류 하면 많은 것 을 배 울 수 있 습 니 다.앞으로 이런 회사 에 들 어가 서 자신 을 신속하게 성장 시 켰 으 면 좋 겠 습 니 다.면접 은 만 족 스 러 운 일자 리 를 찾기 위 한 것 이 아니 라 그 중에서 의사 소통 을 어떻게 하고 자신 을 어떻게 판매 하 는 지 배 울 수 있 습 니 다.더 중요 한 것 은 자신의 부족 함 을 알 게 하 는 것 입 니 다.자신 이 어떤 부분 에 부족 한 지,그리고 향상 시 켜 야 합 니 다.
HashTable,HashSet,Dictionary 의 차이 점 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.HashTable,HashSet,Dictionary 의 차이 점 에 관 한 더 많은 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.