본문 바로가기

- Programming/- C#

★ 17. C# - Dictionary Collection

반응형

C# 콜렉션 중 하나인 Dictionary에 대해 알아보겠습니다.


<Dictionary 선언하는 방법>


Dictionary<string, int> dictionary = new Dictionary<string, int>();

Dictionary를 선언할 때는 <Key, Value>를 이용해 선언합니다. 즉, 키와 값이 쌍으로 이루어져 만들어져 있습니다. 차후 값을 읽어올 때에도 이 점을 이용하게되므로 아주 중요한 개념입니다. 예제를 통해 알아보겠습니다.

[1] Dictionary 읽고 쓰는 기본적 사용 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Collections.Generic;
 
namespace DictionarySample
{
    class Program
    {
        Static void Main()
        {
            Dictionary<stringint> dic = new Dictionary<stringint>()
            {
                {"dog"2},
                {"iguana"-1},
                {"cat"1},
                {"cow"0}
            };
 
            foreach (KeyValuePair<stringint> pair in dic)
            {
                Console.WriteLine("{0}, {1}",
                    pair.Key,
                    pair.Value);
            }
 
            foreach (var pair in d)
            {
                Console.WriteLine("{0}, {1}",
                    pair.Key,
                    pair.Value);
            }
        }
    }
}
cs

Output

dog, 2
iguana, -1
cat, 1
cow, 0
dog, 2
iguana, -1
cat, 1
cow, 0

[2] Key를 List로 받아와서 처리하는 샘플 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using System.Collections.Generic;
 
namespace DictionarySample
{
    class DictionaryToList
    {
        public void DictionaryToListFunc()
        {
            Dictionary<stringint> dic = new Dictionary<stringint>()
            {
                {"dog"2},
                {"iguana"-1},
                {"cat"1},
                {"cow"0}
            };
 
            List<string> list = new List<string>(dic.Keys);
 
            foreach (string k in list)
            {
                Console.WriteLine("{0}, {1}",
                    k,
                    d[k]);
            }
        }
    }
}
cs

Output

dog, 2
iguana, -1
cat, 1
cow, 0

# 두 코드의 성능 차이 #

1. KeyValuePair Loop : 125 ms
2. Keys Loop : 437 ms

-> 키 리스트로 만든 이후에 이 키를 이용해 다시 루프를 돌면서 값을 읽어 오는 것이 훨씬 효율적입니다.

[3] 키 또는 값 있는지 확인하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void ContainsKeyFunc()
{
    Dictionary<intstring> dict = new Dictionary<intstring>();
    dict.Add(100"Jhon");
    dict.Add(200"Steven");
 
    if (dict.ConstainKey(200))
    {
        Console.WriteLine(true);
    }
}
public void ContainsValueFunc()
{
    Dictionary<stringint> dict = new Dictionary<stringint>();
    dict.Add("dog"1);
    dict.Add("cow"2);
    
    if (dict.ContainsValue(1))
    {
        Console.WriteLine(true);
    }
}
cs

위의 코드는 Key가 있는지 확인하는 코드, 아래 코드는 Value가 있는지 확인하는 코드

[4] LINQ를 이용해서 Array를 Dictionary로 변환하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace DictionarySample
{
    class DictionaryToList
    {
        public void DictionaryLINQ()
        {
            string[] arr = new string[]
            {
                "Hello",
                "World"
            };
 
            var dict = arr.ToDictionary(item => item, item => true);
            foreach (var pair in dict)
            {
                Console.WriteLine("{0}, {1}",
                    pair.Key,
                    pair.Value);
            }
        }
    }
}
cs

[5] Dictionary Indexer

Dictionary를 array처럼 Index를 이용해 사용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
public void DictionaryIndexers()
{
    Dictionary<intint> dictionary = new Dictionary<intint>();
 
    dictionary[1= 2;
    dictionary[2= 1;
    dictionary[3= 3;
 
    Console.WriteLine(dictionary[1]);
    Console.WriteLine(dictionary[2]);
}
cs

Output

3
1


참고한 사이트 : http://swconsulting.tistory.com/40

반응형

'- Programming > - C#' 카테고리의 다른 글

★ 18. 람다식 (Lambda Expression)  (0) 2017.03.26
★ 16. C# - List 사용 예제  (2) 2017.03.22
★ 15. c# ref와 out의 차이  (0) 2017.02.16
★ 14. c# 네트워크 개발 p13  (0) 2017.02.16
★ 13. c# 네트워크 개발 p12  (0) 2017.02.16