HashMap和Hashtable的区别?
Hashtable对于有些人可能会有点面生。Hashtable是JDK 1.0就已经出现的,细心的人可能会发现Hashtable这是一个不规范的命名方式,理论上来说应该写成HashTable的。但是首先声明一点Hashtable就是正确的写法,这是为数不多的不规范命名的类,原因是因为出现的比较早,命名格式还不是很统一,但因为被广泛应用,所以后来就没办法改回来。在有的资料中可能会出线HashTable这种写法,注意不要被误导了。
Hashtable实现了一个哈希表,它将键映射到值。 任何非null
对象都可以用作键值或值。这一点上跟HashMap很相似,不同的是HashMap是允许null对象作为键或者值的,只不过是基本上不会这么使用。HashMap是不同步的,而Hashtable是同步的。
线程安全 | 键为null | 值为null | 同步 | 效率 | |
HashMap | 不安全 | 允许 | 允许 | 不同步 | 高 |
Hashtable | 安全 | 不允许 | 不允许 | 同步 | 低 |
List、Set、Map等接口是否都是继承于Map接口
这个问题其实不难,List和Set都是继承于Collection接口,而Map本身就是一个顶层接口,所以他们都不是继承于Map接口。