이번 시간에는 자바에서 해시테이블(HashTable)에 대한 개념과 예제를 올려봅니다.
저도 책을 통해 처음 알았습니다.
HashTable은 Map(인터페이스) 계열에 속하며
Object 유형을 저장할 수 있으며, key와 value를 매핑하여 저장합니다.
또한 데이터가 75% 차면 자동으로 저장 영역을 확대하고 key값의 중복을 허용하지 않습니다.
- 데이터 저장 : Object put(Object key, Object val)
- 데이터 꺼내오기 : Object get(Object key)
- 벡터는 순서, Map은 무순서
그럼 해시테이블 예제와 결과 화면을 보여드리겠습니답~!
package testtest;
import java.util.*;
public class test {
public static void main(String[] args) {
Hashtable h=new Hashtable();
h.put("하나", new Integer(1));
h.put("둘", "Two");
h.put("셋", "Red");
h.put("파랑", java.awt.Color.blue);
Object val=h.get("둘");
String str=(String)val; // Object 유형의 val을 String형으로 바꾼다, (Generic을 안써서 불편하다)
System.out.println(str);
java.awt.Color cr=(java.awt.Color)h.get("파랑");
System.out.println(cr);
//Generic을 사용하지 않으면 형변환을 해야한다.
//Generic을 사용하려면 저장할 유형(K,V)을 두개 지정해야한다.
//Generic => Hashtable(K,V)
Hashtable<String,Integer> h2=new Hashtable<String,Integer>();
h2.put("생년", new Integer(1945));
h2.put("나이", 79); //Auto Boxing -> 자동으로 래퍼클래스로 변환
h2.put("연봉", new Integer(5000));
Integer age=h2.get("나이");
System.out.println("age: "+age);
/*Enumeration<K> keys() : 키 값들을 Enumeration(반환) / 객체로 반환한다.
Returns an enumeration of the keys in this hashtable.
Enumeration<V> elements() : value 값들을 Enumeration(반환) / 객체로 반환한다
Returns an enumeration of the values in this hashtable.
Collection<V> values() : value 값들을 Collection 형태로 반환한다. / 객체로 반환한다
Returns a Collection view of the values contained in this map.
*/
//h2의 키 값을 반복문 통해 추출하여 출력하기
//키 값을 String형으로
//Enumeration<K> keys()
Enumeration<String> en=h2.keys();// en에 커서가 있다
while(en.hasMoreElements()){
String key=en.nextElement();
Integer val2=h2.get(key);
System.out.println(key+"==>"+val2);
}
Enumeration<Integer> en2=h2.elements();
for(;en2.hasMoreElements();){
Integer val3=en2.nextElement();
System.out.println(val3);
}
System.out.println("==============");
//Iterator<E> iterator()
//Returns an iterator over the elements in this collection.
Collection<Integer> en3=h2.values();
Iterator<Integer> it=en3.iterator();
while(it.hasNext()){
Integer i=it.next();
System.out.println(i);
}
System.out.println("########################");
//확장 for 루프
for(Integer i:en3){
System.out.println("i="+i);
}
}
}