这应该是诸位看官经常能碰见的一个面试题了,首先我的经典回答就是
HashTable 是 线程同步的,并不支持null的键值,而且正在被弃用,它继承于Dicionary接口,clonable接口,序列化(seriliazable)接口
HashMap 是线程不同步的,但支持null的键值,它继承于AbastractMap接口,clonable接口,seriliazable接口,一般存取都能达到常数级的时间,如果不要求元素顺序,hashMap是首选;
treemap是继承于navigateMap(navigateMap基本就是返回某key值 范围的entry数组)的,它基于红黑树实现,根据key值顺序或者是指定的Comparator 来访问;
此外,从上述三个数据结构中,我们还能往外延展到这些问题:
1.hashMap的 扩容(resize)、负载因子是怎么设计的