hashmap为什么要允许key和value为空 但是hashtable却不允许呢?源码说这是特殊的map,难道它除了线程安全,还有别的吗?
HashTable是Java中的遗留类,现在不怎么用了,这里HashMap vs HashTable有个解释。也许HashTable类的设计者当时认为null作为key 和value 是没有什么用的。
HashMap是之后的版本引进的类,它的接口Map表达的意义更为广泛,也许HashMap的设计者认为null作为key和value是有实际意义的,所以才允许为null.
当然实际项目中,真的是有value为null的情况的。key为null的情况比较少见,但不代表没有。HashMap允许null为key和value应当是类的设计者思考让这个类更有用的设计吧。
这个怎么回答呢,如果两者一样那么其中一个就显得多余了。
hashmap是一种轻量的实现,着重在于提供一种可以快速检索的数据结构,从底层实现看,线程安全或者不安全,都可以做到key value为空。
但是既然是轻量的实现,那么不判断为空就更加提高了效率,而且如果你需要判断的话,有hashtable,这里再实现功能就重复了。
从使用者角度看:
HashTable,在插入的时候需要保证非null
HashMap,插入不需要考虑null
获取的结果都需要考虑null
而设计者必须遵从使用者的需求而设计。
恩 解释的很详细了
解释的很详细了,分给二楼吧
我知道jdk.的源码实现 只想知道 为什么要这么设计