티스토리 뷰

반응형


Hashtable 을 한번 쯤 사용해보셨을 것입니다. 아마도 Json 처리할때도 사용되어지고 있지요.


기본적인 사용법은 쉽게 찾아서 할 수 있을 듯 합니다. 그래서 기본적 사용법은 생략하고 여기서는 Hashtable내에 Hashtable이 있는 경우를 해보겠습니다. Json으로 연동하기 위해서 많이 사용하고 있어서 한번 쯤 기록을 남겨 둡니다.


Hashtable table1 = new Hashtable();
table1.Add("aaaa", 111);
table1.Add(1111, "aaa");
Hashtable table2 = new Hashtable();
table2.Add("bbbb", 222);
table2.Add(2222, "bbb");
table1.Add("cccc", table2);
foreach (var item in table1.Keys)
{
Debug.LogFormat("key : {0} value : {1}", item.ToString(), table1[item].ToString());
}


흠 보기 싫은 밑줄이 보이네요.. 그래도 이렇게 하고 실행을 해보았습니다.


key : cccc value : System.Collections.Hashtable

key : 1111 value : aaa

key : aaaa value : 111


위와 같은 결과를 볼 수 있습니다. 여기서 보시면 역순으로 역순으로 나오는 것을 알 수 있습니다. push_front 같은 느낌이죠. 그리고 다시 key 값이 cccc 로 명명한 table2 값을 얻어야 합니다.


약간의 코딩을 더 합니다.


Hashtable table1 = new Hashtable();
table1.Add("aaaa", 111);
table1.Add(1111, "aaa");
Hashtable table2 = new Hashtable();
table2.Add("bbbb", 222);
table2.Add(2222, "bbb");
table1.Add("cccc", table2);
foreach (var item in table1.Keys)
{
Debug.LogFormat("key : {0} value : {1}", item.ToString(), table1[item].ToString());

if (item.ToString() == "cccc")
{
Hashtable table = table1[item] as Hashtable;
foreach (var item2 in table.Keys)
{
Debug.LogFormat("key : {0} value : {1}", item2.ToString(), table[item2].ToString());
}
}
}


값을 읽어 올때 as Hashtable 을 해주어서 변환합니다.


key : cccc value : System.Collections.Hashtable

key : bbbb value : 222

key : 2222 value : bbb

key : 1111 value : aaa

key : aaaa value : 111


결과 값입니다. 급히 테스트 삼아 한거라 변수명에 신경쓰지 않았지만 제가 참고하기에 문제 없어서 그냥 둡니다. 확실히 역순으로 들어 간것을 확인 할 수 있습니다. Hashtable에는 Key와 Value가 Object라서 무엇이든 넣을 수 있습니다. 그런데 이 정도 알게 되면 저절로 무엇이든 할 수 있을 것이라 생각됩니다.

728x90
반응형
댓글