我正准备进行软件访谈,现在我几天都遇到了问题.
我无法弄清楚Java Collection API中存在的linkedhashmap,map,hashtable和hashmap之间的区别.
所有这些都具有相同的获取和复杂性吗?我知道map是接口类和hashmap,hashtable,linkedhashmap实现这个接口.那么这是否意味着这三个类的内部实现是一样的?它们是如何在集合api中实现的?
提前致谢!!!
Wal*_*inz 13
我怀疑这些差异可以比这些类中已经在JavaDocs中编写的内容更好地解释:
ConcurrentHashMap和ConcurrentSkipListMap.所有上述Map实现都具有(摊销的)O(1)时间复杂度的基本get/put操作.在处理null值方面存在细微差别,检查JavaDoc的细节是不可避免的.
要了解这些类是如何实现的,请查看它们的继承树:
Map (只是界面)
Dictionary (废弃的抽象类)
Hashtable ("旧的"地图实现依赖于它)AbstractMap ("新"地图实现的基本功能)
HashMap (第一个用于通用目的的具体地图实施)
LinkedHashMap(HashMap通过维护链表扩展)他们都遵守同样的合同,但在实施方面存在一些差异:
通常,最佳实践是使用Map变量的类型,然后根据代码的需要实例化实现类型. HashMap通常是首选,除非您需要一些订购保证,在这种情况下LinkedHashMap或是TreeMap很好的选择.
| 归档时间: |
|
| 查看次数: |
11454 次 |
| 最近记录: |