1、HashMap
- HashMap是一个利用哈希表原理来存储元素的集合,并且允许空的key-value键值对。HashMap是非线程安全的,也就是说在多线程的环境下,可能会存在问题,而Hashtable是线程安全的容器。
- HashMap支持fail-fast机制。HashMap的实例有两个参数影响性能:初始容量和加载因子。可以使用Collections.synchronizedMap(new HashMap(...))来构造一个线程安全的HashMap。
2、TreeMap类
- TreeMap是一个基于NavigableMap实现的红黑树。这个map根据key自然排序存储,或者通过comparator进行定制排序。
- TreeMap为containsKey、get、put和remove方法提供了log(n)的时间开销。
- TreeMap的实现不是线程安全的。如果多线程并发访问TreeMap,并且至少一个线程修改了map,必须进行外部加锁。通常通过在自然封装集合的某个对象上进行同步来实现,或者使用SortedMap m =Collections.synchronizedSortedMap(new TreeMap(...))。
- TreeMap的实现也支持fail-fast机制。