码迷,mamicode.com
首页 > 编程语言 > 详细

java——HashMap

时间:2017-09-03 21:12:07      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:http   一个   alt   java   val   判断   map   cto   list   

今天面试的时候突然被问到hashMap的具体实现,一脸懵逼的感觉,平时经常用的也不过是直接new一个hashMap,然后进行put(key,value),get(key)和remove(key)操作,突然问道原理,所以还是需要恶补一下的。

首先说一下一些常用的数据结构

(1) 数组:数组的话一般需要开辟连续的空间,因此占用的内存严重,空间复杂度很大。但是查找的时候比较方便,可以使用二分查找,复杂度大概就是O(l)。当然删除和插入操作就比较复杂了,因为需要元素的移动

(2) 链表:不需要连续的存储空间,可以离散化存储。所以占用内存比较宽松,空间复杂度很小。但是查找的话比较复杂,需要从head开始遍历,判断是否是需要的元素。

(3) 栈:栈的话其实是从Vector扩展来的,而Vector则是implements 了List这个接口,因此其实上栈是基于链表来实现的。不过由于其特殊性,只有push(object)和pop()两个函数,因此操作的时间复杂度也是O(1)。

(4) hashMap:这个就是接下来的重点了。既然数组的查找方便,而链表的存储方便,那有没有一种方式,可以结合两者的优点。hashMap就是这样被实现出来的。

 

技术分享

技术分享

 

java——HashMap

标签:http   一个   alt   java   val   判断   map   cto   list   

原文地址:http://www.cnblogs.com/dong-liu/p/7470739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!