ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 알기 쉬운 JAVA HashTable, HashMap에 대해 알아보자
    프로그래밍/JAVA 2020. 5. 21. 22:18

    HashTable, HashMap

     

    HashTable, HashMap의 특징

    1) java.util.Map 인터페이스를 구현한 컬렉션이다.

    2) key와 value가 매핑되어 저장된다.

    3) key값은 중복된 값을 지정할 수 없다. (value값은 중복 가능)

    4) Vector와 ArrayList는 index로 순서를 구분하기 때문에 데이터 찾기가 어렵다.

    5) 반대로 HashTable과 HashMap은 key값을 통해 데이터를 찾기가 쉽다.

    6) HashTable은 동기화가 되어 있고 HashMap은 동기화가 되어있지 않다는 데 차이가 있다.

    7) 둘의 기능은 똑같다. 하지만 웹에서는 동기화가 되지않아서 더 가벼운 HashMap을 자주 쓴다.

     

    생성 방법

    다른 자료구조와 같이 제네렉 타입의 변수(<E>)를 사용하지만, HashTable과 HashMap은 key와 value값을 같이 저장할 수 있기 때문에 <K>, <V> 두 가지의 제네릭을 사용한다.

     

    1) 먼저 HashTable, HashMap을 사용하기 위해 java.util.*을 import 해준다.

    2) HashTable<K, V>의 K, V에 요소로 사용할 타입을 지정한다.

     

    key값은 String 유형, value값은 Integer 유형의 HashTable을 만들기 위해 <String, Integer>으로 작성해준다.

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

    데이터 삽입

    V put(K key, V value) 제네렉 K, V타입의 key, value를 매개변수로 받는 put 메소드를 사용한다.

    우리는 <K>를 <String>, <V>를 <Integer>유형으로 정했기 때문에 맞는 타입을 넣어주자.

     

    ht.put() 메소드를 사용하여 HashTable에 담아준다.

    ht.put("생년",new Integer(1994));
    ht.put("나이", 27); // auto boxing
    ht.put("키", 176);

    제네릭 타입에는 기본형이 들어갈 수 없지만, auto boxing 효과로 인해 자동으로 WrapperClass 타입으로 바뀐다.

     

    위에서 Integer인 new Integer(1994)으로 넣는 것이 정석이지만,

    27을 넣어주면 자동으로 Integer 타입으로 auto boxing이 일어난다.

     

    데이터 출력

    HashTable은 key값을 통해 그에 해당하는 value값을 찾아서 출력할 수 있다.

    V get(Object key) key값을 매개변수로 받는 get 메소드를 사용한다.

    우리는 key값을 String으로 정했으니까 문자열을 넣어준다.

     

    ht.get() 메소드를 사용하여 데이터에 접근할 수 있다.

    Integer age = ht.get("나이");
    System.out.println(age);
    int height = ht.get("키"); // auto unboxing
    System.out.println(height);

    value값의 타입은 Integer였기 때문에 Integer 타입의 변수를 지정해서 받아준다.

    int로도 받아줄 수 있는데, 이 때는 auto unboxing이 일어난다.

    27
    176

     

     

     

     

    댓글

Designed by Tistory.