hashmap和hashtable和concurrenthashmap
时间: 2023-11-24 19:51:04 浏览: 97
HashMap、Hashtable和ConcurrentHashMap都是Java中的Map接口的实现类,它们都是用于存储键值对的数据结构。它们之间的主要区别在于线程安全性和性能。
1. HashMap是非线程安全的,它的性能比Hashtable更好。HashMap允许使用null作为键和值,而Hashtable不允许。HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是。
2. Hashtable是线程安全的,它的性能比HashMap差。Hashtable不允许使用null作为键和值。Hashtable的enumerator迭代器是不支持fail-fast的,而HashMap的迭代器是支持fail-fast的。
3. ConcurrentHashMap是线程安全的,它的性能比Hashtable好。ConcurrentHashMap允许使用null作为键和值。ConcurrentHashMap的迭代器是支持fail-fast的。
下面是一个使用ConcurrentHashMap的例子:
```java
import java.util.concurrent.ConcurrentHashMap;
public class Example {
public static void main(String[] args) {
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
System.out.println(map.get("apple")); // 输出:1
}
}
```
阅读全文