HashMap的基本操作

HashMap是基于hash算法的图,是一个数据结构

标题数据结构有:线性结构(数列表List、队列、栈…)、树(二叉树、B树…)、堆、图

Hash算法

  1. 是把任意长度的输入,通过散列算法变成固定长度的输出:摘要算法。
  2. 同一个hash算法,同样的输入,就会有同样的输出。
    在这里插入图片描述

Hash算法特点

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

作用

  1. 提高存储空间利用率;
  2. 提高查询效率;
  3. 做数字签名保证数据传递的安全性;
  4. 作为加密的一种方式(MD4、MD5=Message Digest消息摘要);

HashMap特点

  1. 查找非常快;
  2. 内部基础结构是数组;
  3. put进去的键值对不是按顺序排列的;
  4. java中的hashCode:是int类型,取值范围是-21亿多到+21亿多,42亿多种可能;
  5. put一个key-value的时候,先根据key计算出一个hash值;

HashMap类中几个重要的属性

  1. capacity:容量,数组的长度;
  2. size:实际装的数量;
  3. loadFactor:负载因子,百分比,size到了百分之多少,就扩大容器;
  4. threshold:扩容的阈值,size达到多少个数量的时候,就扩大容量,等于capacity*loadFactor;

HashMap如何处理hash冲突

  1. 桶:数组中每个元素就是一个桶,不冲突的时候每个桶只存一个键值对Node;
  2. 冲突有点多,Node的next属性不为空,组成链表;
  3. 冲突非常多,一个桶超过8个,升级为红黑树;
    在这里插入图片描述
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值