java _hashMap

转载 :http://blog.csdn.net/vking_wang/article/details/14166593


HashMap中存储数据的全局变量是“线性数组”,从结构上观察是‘数组’+‘链表’=‘hash表’

 

数组:存储区间连续,占用内存严重,故空间复杂度大,但数组的二分查找时间复杂度小,

为0(1);寻址容易,删除和插入难

 

链表:存储区间离散,占用内存较宽松,故空间复杂度很小,但时间复杂度大,为0(N);寻址困难,删除和插入难

 

好,两者能不能得到‘寻址’容易,‘插入删除’操作容易的结构,便是hash表,同时不占用太多的内存空间(如果同一个长度的数组和链表存储相同的内容这个占用内存空间的差异是怎么来的?具体存储实现就不研究了)

哈希表

  哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法—— 拉链法,我们可以理解为“链表的数组” ,如图:

 

 

 

添加个Map所在的树:

 

 

 

 

 HashMap

(1)非线程安全的

(2)无序的(数据不是按照存入顺序放置),和iterator每次迭代出的顺序一致不冲突

(3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值