Java Hashtable( 해시 테이블 ) 예제, 간단한 값 넣었다 빼기


데이터를 테이블 형식으로 구성하고자 할 때, 데이터베이스를 많이 사용합니다. 하지만 일반적인 데이터베이스는 대용량의 데이터를 처리하기 용이하게 구성해 디스크로 써 놓은 형태이기 때문에 속도가 느린편입니다. ( Disk I/O 비용이 얼마나 큰지 개발자 분들은 아실꺼라고 믿습니다. )

그래서 컴퓨팅 과정에서 잠깐 저장해 놓는 식으로 데이터를 이용할 때, 혹은 용량은 크지 않지만 자주 변경되는 데이터를 처리할 때 데이터베이스를 이용하게 되면 약간 부담이 생깁니다.

이럴 때 사용하는 것이 해시 테이블입니다. 해시테이블을 선언하고 간단한 값들을 해시 테이블에 집어 넣었다가 빼는 예제를 설명드리겠습니다.


▶ 해시 테이블( Hashtable ) 예제 - 선언하기


해시 테이블은 키와 값을 쌍으로 이루어진 구조를 띄고 있습니다.

Java Hashtable 해시 테이블


이런식으로 Key 값이 있고, 그에 해당하는 Value 가 있는 쌍의 형태로 존재합니다. 이 때, Key 값은 기본적으로 중복이 불가능합니다.  같은 키에 두번 값을 입력하면 나중에 입력한 값이 할당됩니다.

따라서 해시테이블을 선언할 때도 <Key, Value> 의 쌍을 명시해주어야 합니다.

Hashtable<String, Integer> ht = new Hashtable<String, Integer>();

해시 테이블을 사용하기 위해서는 java.util.* 을 import 해줘야 합니다.

그리고 int 형의 Value 값을 사용하기 위해서는 int 라고 쓰지 말고, Integer 라고 써야합니다. 마찬가지로 Double 형도 대문자로 시작하는 Double 을 써야 합니다.


▶ 해시 테이블( Hashtasble ) 예제 - 값 넣기, 빼기


이제 위에서 선언한 해시테이블에 키-값의 쌍을 입력하는 방법을 알아보도록 하겠습니다.

// 해시 테이블에 값 넣기
ht.put("a", 1);
ht.put("b", 1);
ht.put("c", 1);

Hashtable의 메소드에는 put 메소드가 있습니다. put 메소드를 이용해서 해시 테이블에 키-값 쌍을 집어 넣을 수 있습니다. 이 때, 키 값이 중복될 경우 나중에 입력한 값이 덮어쓰기 됩니다.


// 해시 테이블에서 값 얻어오기
ht.get("a");
ht.get("b");
ht.get("c");

해시 테이블에서 값을 얻어 올 때는 Hashtable 클래스가 제공하는 get 메소드를 이용합니다. get 메소드를 이용하면 키 값을 얻어서 Value를 리턴합니다.


▶ 해시 테이블( Hashtable )을 이용한 예제


import java.util.Enumeration;
import java.util.Hashtable;


public class testHashtable
{
    public static void main(String args[])
    {
        Hashtable<String, Integer> ht = new Hashtable<String, Integer>();
       
        // 해시 테이블에 키와 값 집어 넣기
        ht.put("abc", 1);
        ht.put("abc1", 2);
        ht.put("abc2", 3);
       
       
        // 해시 테이블에 있는 값 꺼내오기
        Enumeration en = ht.keys();
       
        while(en.hasMoreElements())
        {
            String key = en.nextElement().toString();
            System.out.println(key + " : "+ht.get(key));
        }
    }
}


여기서 사용한 Enumeration 클래스를 이용해서 해시 테이블에 들어있는 모든 키 값의 리스트를 얻어 올 수 있습니다. Enumeration 클래스를 이용해서 해시테이블에 들어있는 모든 키와 값을 확인하는 Java 코드입니다.

출력화면은 다음과 같습니다.

Java Hashtable 해시 테이블 예제


해시 테이블은 메모리상에 존재하기 때문에 I/O 속도가 굉장히 빠릅니다. 따라서 간단한 작업이라면 DB에 넣지 말고 해시테이블에서 작업을 하는것도 좋은 방법으로 보입니다. ( 뭐 응용하기에 따라 다르겠지요. )




+ Recent posts