반응형
출처: http://egloos.zum.com/penta82/v/4099869
JCF(Java Collection Framework)에서 많이 사용되었던 Hashtable에 대해서 살펴보자.
Hashtable은 JDK 1.2이전부터 존재해 왔던 클래스이다. 많은 사람들이 의문인 것은 왜 HashTable이 아니냐는 것인데 여기서는 그냥 넘어가자. 클래스명이야 소스 개발자의 몫이니까.
Hashtable의 중요 메소드를 살펴보면,
- void clear()
- 모든 키와 값을 제거한다.
- boolean contains(Object value), containsValue(Object value)
- 주어진 객체에 대응하는 키 값이 있는지 알려준다.
- boolean containsKey(Object key)
- 주어진 키 값이 있는지 알려준다.
- Enumeration keys()
- 해시 테이블의 키 값들을 돌려준다.
- Enumeration elements()
- 해시 테이블에 저장된 객체들을 돌려준다.
- Object get(Object key)
- 주어진 키에 대응하는 값을 돌려준다.
- Object put(Object key, Object value)
- 키와 대응하는 값을 저장한다.
- Object remove(Object key)
- 키의 대응 관계(Mapping)을 제거한다.
- int size()
- 해시 테이블의 대응 관계(Mapping)의 개수를 돌려준다.
여기서 'Enumeration이 무엇인가?' 하는 궁금증이 있을 것이다. Enumeration은 단순히 객체들의 목록을 가지고 있는 구조체라고 생각하면 된다. Enumeration클래스의 메소드를 보면
- boolean hasMoreElements()
- 더 이상의 요소가 있는지 알려준다.
- nextElements()
- 다음 요소를 돌려준다. 만약 없다면, NoSuchElementException 예외를 발생한다.
따라서 위의 두 메소드를 사용하면 for문, while문을 이용하지 않고도 key값과 element값에 접근할 수 있다.
이제 관련 소스를 살펴보자.
public class HashtableExam2 {
public static void main(String[] args) {
Hashtable htable = new Hashtable(10);
// put(Object key, Object value)메소드
htable.put("java", "프로그래밍 언어");
htable.put("bible", "성서, 성경, 성전");
htable.put("star", "별, 항성");
htable.put("moon", "달");
// contains(Object value);
if(htable.contains("프로그래밍 언어")) {
System.out.println("value : \"프로그래밍 언어\" 존재");
}else{
System.out.println("value : \"프로그래밍 언어\" 존재하지 않음");
}
if(htable.contains("음악")) {
System.out.println("value : \"음악\" 존재");
}else{
System.out.println("value : \"음악\" 존재하지 않음");
}
// containsValue(Object value)
if(htable.containsValue("프로그래밍 언어")) {
System.out.println("value : \"프로그래밍 언어\" 존재");
}else{
System.out.println("value : \"프로그래밍 언어\" 존재하지 않음");
}
if(htable.containsValue("음악")) {
System.out.println("value : \"음악\" 존재");
}else{
System.out.println("value : \"음악\" 존재하지 않음");
}
// containsKey(Object key)
if(htable.containsKey("java")) {
System.out.println("key : \"java\" 존재");
}else{
System.out.println("key : \"java\" 존재하지 않음");
}
if(htable.containsValue("ruby")) {
System.out.println("key : \"ruby\" 존재");
}else{
System.out.println("key : \"ruby\" 존재하지 않음");
}
// get(Object key)
String value = (String)htable.get("java");
System.out.println("java(key) : " + value + "(value)");
// remove(Object key)
htable.remove("star");
// Enumeration 사용
Enumeration e = htable.keys();
String key, val;
while(e.hasMoreElements()) {
key = (String)e.nextElement();
val = (String)htable.get(key);
System.out.println("[" + key + "] " + val);
}
// clear()
htable.clear();
// size()
System.out.println("htable의 size : " + htable.size());
}
}
반응형
'IT기술 관련 > 모바일' 카테고리의 다른 글
adb 의 android 장치 연결 상태.(no permissions / unauthorized) - ubuntu (0) | 2016.02.12 |
---|---|
안드로이드 BEST 해킹 앱 (0) | 2016.02.11 |
[Android] 안드로이드/Android Cursor를 이용한 DB 데이터 사용 하기 ~ ! (1) | 2016.01.25 |
[Android] 배경화면, 버튼이미지 변경 (LinearLayout) (0) | 2016.01.03 |
[Android] Dialog Inflate (0) | 2016.01.02 |