본문 바로가기

C#/Dictionary

(5)
딕셔너리의 키가 중복되는 것을 허용하는 방법 (값에 리스트를 저장하는 방법) 딕셔너리는 키가 중복되는 것을 허용하지 않는다. 따라서 동일한 키에 여러 객체를 관련지을 수 없다. 동일한 줄임말에 여러 용어를 대응시키려고 해도 Dictionary에는 대응시킬 수 없다. 키에 중복을 허용하여 여러 용어를 대응 시키려면 값의 형을 string이 아니라 List으로 지정해야 한다. 이렇게 하면 하나의 키에 여러 용어를 저장할 수 있게 된다. //딕셔너리 초기화 var dict = new Dictionary() { {"A.I", new List {"Artificial Intelligence", "Avian Influenza", }}, {"DPS", new List {"Damage Per Second", "Distance Per Stroke", }}, }; //딕셔너리에 추가 var key ..
사용자가 정의한 클래스를 키로 사용하는 딕셔너리 사용자가 정의한 클래스에 Equals 메서드와 GetHashCode 메서드를 오버라이드 한다. 문자열이나 숫자값이 아닌 사용자가 작성한 클래스를 딕셔너리의 키로 사용하고 싶을 때가 있을 것이다. 월과 일을 멤버로 갖고 있는 MonthDay라는 클래스를 정의했을 때 이 MonthDay객체를 키로 이용하는 다음 코드를 작성했다. //MonthDay 객체를 키로 이용하고 각 날짜에 대응하는 휴일을 저장한다. var dict = new Dictionary { { new MonthDay(6, 6), "현충일" }, { new MonthDay(8, 15), "광복절" }, { new MonthDay(10, 3), "개천절" }, } var monthDay = new MonthDay(8, 15); var select..
배열, 리스트, 딕셔너리로부터 딕셔너리를 생성하는 방법 1. 배열, 리스트를 딕셔너리로 변환 배열과 리스트를 딕셔너리로 변환하는 목적 --> 딕셔너리로 변환하면 키를 지정해서 해당 값에 빠르게 접근할 수 있다! LINQ에 있는 ToDictionary 메서드를 사용하면 배열이나 리스트를 딕셔너리로 변환할 수 있다. List를 Dictionary로 변환하는 예 var monsters= new List(); ... //객체의 멤버를 ToDictionary의 첫 번째 인수에 대입 var monstersDict = monsters.ToDictionary(mon => mon.Code); 이 코드에서는 ToDictionary 메서드의 첫 번째 인수에 식별 코드(Monster.Code)를 나타내는 람다식을 넘겨준다. 이렇게 하면 식별 코드를 '키(key)'로 이용하고 Mo..
딕셔너리의 LINQ와 foreach 활용 딕셔너리에 있는 모든 요소를 꺼낸다 배열이나 리스트와 마찬가지로 foreach문을 사용해 딕셔너리에 저장돼 있는 모든 요소를 꺼낼 수 있다. foreach로 꺼낼 수 있는 요소의 형은 KeyValuePair형이다. 등록한 순서로 나온다는 보장이 없어 주의가 필요하다. foreach를 사용할 수 있다는 것은 LINQ를 사용할 수 있다는 말이다. [딕셔너리의 LINQ] var average = itemDict.Average(x => x.Value); //Value의 평균을 구한다. int total = itemDict.Sum(x => x.Value); //Value의 합을 구한다. var items = itemDict.Where(x => x.Key.Length > 5); //Where 메서드로 요소를 필터링..
딕셔너리 요수 추가, 추출, 삭제 1. 딕셔너리에 요소를 추가 딕셔너리에 요소를 추가하려면 다음과 같이 배열에 추가하는 방법과 같은 방법으로 한다. itemDict["sword"] = 500; employeeDict[10] = new Employee(10, "홍길동"); 이미 키가 딕셔너리에 존재한다면 값이 치환되어 이전 값은 사라진다. Add 메서드를 사용해 요소를 추가할 수도 있다. 하지만 Add 메서드는 딕셔너리에 이미 키가 존재할 경우에 ArgumentException 예외를 발생시키므로 주의해야 한다. 2. 딕셔너리에서 요소 추출 딕셔너리에 요소를 꺼낼 때도 배열과 같은 방법을 사용한다. int price = itemDict["sword"]; var employee = employeeDict[10]; 지정한 키가 딕셔너리에 없으..