Java에서 해시 테이블과 해시 맵의 차이점
이 튜토리얼에서는 Java에서Hashtable
과HashMap
의 차이점을 소개합니다. 또한 주제를 이해하기위한 몇 가지 예제 코드를 나열합니다.
Hashtable은 키-값 쌍에 데이터를 저장하는 데 사용되는 Java 컬렉션 프레임 워크의 클래스입니다. Java의 레거시 클래스이며 요소를 저장하는 해시 개념에서 작동합니다. 최신 Java 버전에서는 Hashtable이 권장되지 않습니다. 우리는 Hashtable보다 더 진보 된 HashMap을 사용해야합니다. Java에서 Hashtable과 HashMap의 주요 차이점을 요약 한 아래 표를 참조하십시오.
Hashtable
vs HashMap
Hashtable |
HashMap |
---|---|
동기화 됨 | 동기화되지 않음 |
Null은 허용되지 않습니다. | null 허용 |
레거시 클래스 | 유산 아님 |
느리다 | 빠르다 |
위의 비교표에서 Hashtable과 HashMap의 주요 차이점을 명확하게 확인할 수 있습니다. 이제 몇 가지 예를 살펴 보겠습니다.
Hashtable
이 내부적으로 동기화되므로Hashtable
이HashMap
보다 약간 느려집니다.
Java로Hashtable
생성
이 예에서는 Hashtable을 생성합니다. Hashtable을 생성하는 가장 간단한 방법이며 코드에서 Hashtable을 가져 오기만하면됩니다. 이 클래스는java.util
패키지에 있습니다. 아래 예를 참조하십시오.
import java.util.Hashtable;
public class SimpleTesting {
public static void main(String[] args) {
Hashtable<Integer, String> hashTable = new Hashtable<>();
hashTable.put(1, "One");
hashTable.put(2, "Two");
hashTable.put(3, "Three");
System.out.println(hashTable);
}
}
출력:
{3=Three, 2=Two, 1=One}
Java로HashMap
생성
이 예에서는 Java로HashMap
을 생성합니다. HashMap을 생성하는 가장 간단한 방법이며 코드에서 HashMap을 가져 오기만하면됩니다. 이 클래스는java.util
패키지에 있습니다. 아래 예를 참조하십시오.
import java.util.HashMap;
public class SimpleTesting {
public static void main(String[] args) {
HashMap<Integer, String> hashTable = new HashMap<>();
hashTable.put(1, "One");
hashTable.put(2, "Two");
hashTable.put(3, "Three");
System.out.println(hashTable);
}
}
출력:
{3=Three, 2=Two, 1=One}
Java의HashMap
에 null 저장
HashMap
을 사용하면 null을 저장할 수 있습니다. 즉,HashMap
에 null 키와 여러 null 값을 저장할 수 있습니다. 이 클래스는 컬렉션에 null이있을 때 유용합니다. 아래 예를 참조하십시오.
import java.util.HashMap;
public class SimpleTesting {
public static void main(String[] args) {
HashMap<Integer, String> hashTable = new HashMap<>();
hashTable.put(1, "One");
hashTable.put(2, "Two");
hashTable.put(3, "Three");
hashTable.put(null, "Four");
hashTable.put(null, null);
System.out.println(hashTable);
}
}
출력:
{null=null, 1=One, 2=Two, 3=Three}
Java의Hashtable
에 null 저장
Hashtable
은 null 저장을 허용하지 않습니다. 이는Hashtable
에 null을 저장할 수 없음을 의미합니다. 이 클래스는 컬렉션에 null이있는 경우 유용하지 않습니다. 아래 예를 참조하십시오.
널값이 저장되면NullPointerException
예외가 발생합니다.
import java.util.Hashtable;
public class SimpleTesting {
public static void main(String[] args) {
Hashtable<Integer, String> hashTable = new Hashtable<>();
hashTable.put(1, "One");
hashTable.put(2, "Two");
hashTable.put(3, "Three");
hashTable.put(null, "Four");
hashTable.put(null, null);
System.out.println(hashTable);
}
}
출력:
Exception in thread "main" java.lang.NullPointerException