안녕하세요
이번 포스팅에서는 HashTable에 대해서 알아보겠습니다
목차
HashTable이란?
HashTable 선언하기
HashTable 값 추가하기
HashTable 값 삭제하기
HashTable 크기 구하기
HashTable 값 출력하기
HashTable이란?
HashMap과 구조가 비슷하지만 용도는 다릅니다
HashTable은 키와 값을 1:1형태로 가져가며 HashTable에 저장이 됩니다
-> 키는 값을 식별하기 위한 고유한 키, 값은 키가 가진 값을 의미합니다
HashMap과 반대로 동기화가 이루어집니다
HashMap에서는 값으로 null이 입력이 가능하지만 HashTable에서는 null 입력이 불가능합니다
위와 같이 키, 값 형태를 가진다고 보면됩니다
키는 중복이 안 되지만 값은 중복을 허용합니다
HashTable 선언하기
import java.util.Hashtable;
public class HashTableDemo {
public static void main(String[] args) {
Hashtable ht = new Hashtable(); // 타입 설정x Object 설정
Hashtable<Integer, Integer> i = new Hashtable<Integer, Integer>(); // Integer, Integer 타입 선언
Hashtable<Integer, Integer> i2 = new Hashtable<>(); // new는 타입 생략 가능
Hashtable<Integer, Integer> i3 = new Hashtable<Integer, Integer>(i); // i의 Hashtable을 i3으로 값 이전
Hashtable<Integer, Integer> i4 = new Hashtable<Integer, Integer>(10); // 초기용량 지정
Hashtable<Integer, Integer> i5 = new Hashtable<Integer, Integer>() {{ // 변수 선언 + 초기값 지정
put(1, 100);
put(2, 200);
}};
Hashtable<String, String> str = new Hashtable<String, String>(); // String, String 타입 선언
Hashtable<Character, Character> ch = new Hashtable<Character, Character>(); // Char, Char 타입 선언
}
}
HashTable을 선언하는 방법은 여러가지가 있습니다
HashTable은 하나의 Entry에 Key, Value 2개를 가지고 있습니다
타입을 선언하려면 두 개를 동시에 선언해줘야합니다
Hashtable<타입, 타입> 변수명 = new Hashtable<타입, 타입>(); 으로 선언을 해줍니다
나머지 HashTable의 선언 방법들은 위의 예제와 주석을 참고바랍니다
HashTable 값 추가하기
import java.util.Hashtable;
public class HashTableDemo {
public static void main(String[] args) {
Hashtable<String, String> ht = new Hashtable<String, String>(); // Hashtable 선언
// 값 추가
ht.put("1", "Hello1");
ht.put("2", "World2");
ht.put("3", "Hello3");
ht.put("4", "World4");
ht.put("2", "WorldWorld2");
System.out.println(ht); // 결과출력
}
}
HashTable의 값을 추가하는 방법은 put(Key, Value) 메서드를 사용하여 값을 추가합니다
put() 메서드를 사용하여 Key가 같고 Value가 다른 값을 중복해서 넣으면 나중에 넣은 Value값으로 변경됩니다
결과
HashTable 값 삭제하기
import java.util.Hashtable;
public class HashTableDemo {
public static void main(String[] args) {
Hashtable<String, String> ht = new Hashtable<String, String>(); // Hashtable 선언
// 값 추가
ht.put("1", "Hello1");
ht.put("2", "World2");
ht.put("3", "Hello3");
ht.put("4", "World4");
System.out.println(ht); // 결과출력
ht.remove("2");
System.out.println(ht); // 결과출력
ht.clear();
System.out.println(ht); // 결과출력
}
}
HashTable의 값을 삭제하는 방법은 여러가지가 있습니다
그 중에서 remove(Key값) 메서드는 Key값에 해당하는 값을 하나 삭제해줍니다
clear() 메서드는 HashTable의 모든 값을 삭제할 때 사용합니다
결과
HashTable 크기 구하기
import java.util.Hashtable;
public class HashTableDemo {
public static void main(String[] args) {
Hashtable<String, String> ht = new Hashtable<String, String>(); // Hashtable 선언
// 값 추가
ht.put("1", "Hello1");
ht.put("2", "World2");
ht.put("3", "Hello3");
ht.put("4", "World4");
System.out.println(ht); // 결과출력
System.out.println("Size : " + ht.size());
}
}
HashTable의 크기를 구하는 방법은 size() 메서드를 사용합니다
HashTable안의 키의 갯수를 출력해줍니다
결과
HashTable 값 출력하기
HashTable의 값을 출력하는 방법은 여러가지가 있습니다
그 중에서 두 가지 방법을 설명하겠습니다
향상된for문과 Iterator클래스를 사용한 방법입니다
첫 번째 향상된for문을 사용한 방법입니다
import java.util.Hashtable;
import java.util.Map;
public class HashTableDemo {
public static void main(String[] args) {
Hashtable<String, String> ht = new Hashtable<String, String>(); // Hashtable 선언
// 값 추가
ht.put("1", "Hello1");
ht.put("2", "World2");
ht.put("3", "Hello3");
ht.put("4", "World4");
/* 향상된for문을 사용하여 HashTable의 값을 출력 */
for(Map.Entry<String, String> e : ht.entrySet())
System.out.println("Key : " + e.getKey() + ", Value : " + e.getValue());
}
}
향상된for문과 Map클래스를 사용하여 구현을 합니다
entrySet을 사용하여 HashTable을 Map클래스의 Entry타입으로 변경을 해줍니다
Entry의 메서드 getKey()와 getValue()를 사용하여 Key값과 Value값을 가져와 반복해서 출력합니다
결과
두 번째는 Iterator방식을 사용한 방법입니다
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class HashTableDemo {
public static void main(String[] args) {
Hashtable<String, String> ht = new Hashtable<String, String>(); // Hashtable 선언
// 값 추가
ht.put("1", "Hello1");
ht.put("2", "World2");
ht.put("3", "Hello3");
ht.put("4", "World4");
Iterator<Entry<String, String>> iter = ht.entrySet().iterator();
while(iter.hasNext())
{
Map.Entry<String, String> entry = iter.next();
System.out.println("Key : " + entry.getKey() + ", Value : " + entry.getValue());
}
System.out.println("-----------------------------");
Iterator<String> iter2 = ht.keySet().iterator();
while(iter2.hasNext())
{
String key = iter2.next();
System.out.println("Key : " + key + ", Value : " + ht.get(key));
}
}
}
Iterator를 Entry로 선언하여 위의 향상된 for문처럼 entrySet()의 iterator() 방식으로 가져옵니다
예제의 두 번째 방법은 Iterator를 String타입으로 선언하여 HashTable의 키 값을 iterator형태로 집어넣습니다
String을 반복하여 String의 Key값에 해당하는 Value를 반복해서 출력합니다
결과
여기까지 HashTable의 개념과 사용방법에 대해서 알아봤습니다
추가로 HashTable의 메서드 및 개념에 대해서 더 알아보고 싶은 분들은 아래의 사이트를 참고바랍니다!
https://www.geeksforgeeks.org/hashtable-in-java/
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] 재귀함수(Recursion Function) 개념 및 예제 (0) | 2021.05.25 |
---|---|
[JAVA] HashMap과 HashTable의 차이점 (0) | 2021.05.25 |
[JAVA] HashMap의 개념 및 사용법 정리 (0) | 2021.05.25 |
[JAVA] TreeSet 개념과 사용법 정리 (1) | 2021.05.25 |
[JAVA] LinkedHashSet의 개념과 사용법 (0) | 2021.05.25 |