Please Enable JavaScript!
Gon[ Enable JavaScript ]

[C#] HashTable 사용방법과 예제 모음

기타 언어/C# & MFC
반응형

[C#] HashTable 사용방법과 예제 모음

 

환경 : Visual Studio 2012

 

C# 에서 HashTable Java 에서 HashMap 과 동일합니다. Key, Value 쌍으로 저장하게 됩니다. 키는 Null 이 들어갈수 없지만 Value 는 가능합니다. Key 에 해당하는 값을 수정할수 있으며 삭제후 다시 저장하면 됩니다.

 

HashTable using System.Collections; 네임스페이스에 포함되어 있습니다. 아래는 저장하는 예제인데 Add() 함수를 이용하는 방법과 속성값 저장형태로 값을 추가할수 있습니다.

 

private void HashTableSample()
{
    Hashtable hash = new Hashtable();

    // Key / Value 로 셋팅합니다. 
    hash.Add("ID", "gon");
    hash.Add("PWD", "1111");
    hash.Add("NAME", "김삿갓");
    hash.Add("ADD", "섬진강대로");

    // 배열 요소 형태로 저장가능함
    hash["PHONE"] = "055-5245-6665";
    hash["MOBILE"] = "010-5245-6665";
}

 

Add 함수를 이용해 값을 넣을 때 기존에 존재하는 Key 값이 있으면 에러가 발생합니다. 그리고 속성값 형태로 값을 입력하는 경우 기존에 존재하면 수정이 되고 없으면 추가가 됩니다. Add 함수를 에러 없이 사용하기 위해 ContainsKey() 함수를 제공해 줍니다. Key 가 존재한다면 True 리턴합니다.

 

// 기존에 있으면 에러남
try
{
    hash.Add("ID", "gonaa");
}
catch
{
    Console.WriteLine("해당하는 키가 존재합니다. ");
}

// ContainsKey 로 존재여부를 체크합니다. 
if (!hash.ContainsKey("ID"))
{
    hash.Add("ID", "gonaa");
    Console.WriteLine("ID 키에 해당하는 값 변경 = \"ht\": {0}", hash["ID"]);
}

// 기존에 Key 값이 있다면 업데이트가 됩니다.
hash["ID"] = "gonaa";

 

다음은 저장된 데이터를 꺼내는 방법입니다. foreach 문을 이용하여 DictionaryEntry 객체에 담은후 key, value 값을 꺼내 쓰시면 됩니다. 두번째 방법은 key value 값들을 따로 분리해서 꺼낼수 있습니다. ICollection 인터페이스 객체로 받아 꺼내쓰시면 됩니다.

 

// DictionaryEntry 객체에 담아 key/value 값을 꺼냄
foreach (DictionaryEntry de in hash)
{
    Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
}

// ICollection 객체에 Key / Value 값들을 리턴함
ICollection keyColl = hash.Keys;
ICollection valueColl = hash.Values;

// ICollection 객체에 각각 저장된 정보를 꺼냄
foreach (string s in keyColl)
{
    Console.WriteLine("Key = {0}", s);
}

foreach (string s in valueColl)
{
    Console.WriteLine("Value = {0}", s);
}

 

저장된 값을 삭제하기 위해서는 Remove() 함수를 이용하면 됩니다.


hash.Remove("PHONE");

if (!hash.ContainsKey("PHONE"))
{
    Console.WriteLine("PHONE 에 해당하는 값이 삭제 되었습니다.");
}

 

[C#] HashTable 사용방법과 예제 모음

 

반응형
Posted by 녹두장군1
,