C#에는 해시맵(HashMap)이라는 컬렉션이 없습니다. 해시맵은 자바(Java)에 존재하는 개념이며, C#에서 이와 동일한 역할을 하는 것은 키-값(key-value) 쌍을 저장하는 Dictionary입니다.
먼저 Dictionary를 생성하고 데이터를 추가해 보겠습니다.
Dictionary<string, int> d = new Dictionary<string, int>();
d.Add("soccer", 1);
d.Add("cricket", 2);
d.Add("tennis", 3);
d.Add("rugby", 4);다음으로 ToList() 메서드로 모든 키를 리스트로 가져온 뒤, Sort() 메서드를 사용하여 사전순(오름차순)으로 정렬합니다.
// 키 가져오기
var val = d.Keys.ToList();
// 정렬
val.Sort();아래는 키를 기준으로 Dictionary를 정렬하는 전체 예제 코드입니다.
예제
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
Dictionary<string, int> d = new Dictionary<string, int>();
d.Add("soccer", 1);
d.Add("cricket", 2);
d.Add("tennis", 3);
d.Add("rugby", 4);
// 키 가져오기
var val = d.Keys.ToList();
// 정렬
val.Sort();
// 정렬된 키 출력
foreach (var key in val) {
Console.WriteLine(key);
}
}
}출력 결과
cricket
rugby
soccer
tennis참고로, 항상 정렬된 상태를 유지하고 싶다면 일반 Dictionary 대신 SortedDictionary<string, int>를 사용하는 것도 좋은 대안입니다. 또한 LINQ의 OrderBy() 메서드를 활용하면 별도의 리스트 변환 없이 한 줄로 정렬된 키나 값을 조회할 수 있습니다.