提高Java方面的知识深度,涉及算法,数据结构,性能

HashMap

HashMap基于Hash算法的图,是一种数据结构。
List,Set,Map,Queue都是数据结构(容器)。
数据结构有:
		线性结构(数组,列表List,队列,栈....)
		树(二叉树,B树....)
		堆
		图

Hash算法

什么是Hash?散列(或音译哈希) 
	Hash是一个广义的算法,是一种思想。
	它是把任意长度的输入,通过散列算法变成固定的输出:提炼 / 摘要算法(不可逆的)。

【特点】

	 不同的输入,经过Hash之后的输出可能会重复
	 很难找到逆向的规律(根据输出结果无法反推出输入是什么)

应用场合?(可以用来干嘛?)

	提高存储空间的利用率
	提高查询的效率
	做数字签名保证数据传递的安全性
	作为加密的一种方式:
		有MD4,MD5-Message Digest消息摘要等。

HashMap

【特点】:查找非常快!
	第一个认识:它内部的基础结构是数组。
	第二个认识:put进去的键值对不是按照顺序排序的
	第三个认识:put一个key-value的时候,先根据key计算出一个Hash值,得出放的位置

HashMap如何处理【hash冲突】?

	桶:数组中的每一个元素就是一个桶,不冲突的时候每个桶只存一个键值对Node
	冲突有点多,Node的next属性不为空,组成链表
	冲突非常多,一个桶参构8个,升级为红黑树

HashMap类中的几个重要的属性:

capacity:容量,数量的长度
size: 	实际装的数量
loadFactor:负载因子,百分比,size到了百分之多少,就扩大容量
threshold: 扩大的阀值,size达到多少个数量的时候,就扩大容量,等于capacity*loadFactor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值