Java中的HashMap和Hashtable有什么区别?
时间: 2024-06-13 22:06:13 浏览: 110
Java中的HashMap和Hashtable都是用于存储键值对的数据结构,它们之间的区别如下:
1. 线程安全性:Hashtable是线程安全的,而HashMap不是。因此,在多线程环境下,Hashtable的性能会比HashMap差。
2. null键和null值:HashMap允许使用null键和null值,而Hashtable不允许。如果在Hashtable中使用null键或null值,会抛出NullPointerException。
3. 迭代器:HashMap的迭代器是fail-fast迭代器,而Hashtable的迭代器不是。这意味着,在迭代HashMap时,如果在迭代过程中对HashMap进行了结构性修改(如添加或删除元素),则会抛出ConcurrentModificationException异常。而在迭代Hashtable时,不会抛出此异常。
4. 继承关系:Hashtable是Dictionary类的子类,而HashMap不是Dictionary类的子类。
下面是一个使用HashMap的例子:
```java
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
// 创建一个HashMap对象
HashMap<String, Integer> map = new HashMap<>();
// 添加键值对
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// 获取键对应的值
int value = map.get("banana");
System.out.println(value); // 输出:2
// 遍历HashMap
for (String key : map.keySet()) {
int val = map.get(key);
System.out.println(key + " : " + val);
}
}
}
```
阅读全文