Java learn HashCode 原理 自我总结

以下是经过个人学习之后 对于Hash Code 的总结 可能存在错误:

在即将结束 对于集合框架的学习——也就是学到Hash Code 这里 感觉 对于算法的时间复杂度和空间复杂度 要求也越来越高 所以需要积累更多高效的算法在写代码时。

实现了List 接口的容器类 是在进行集合框架学习时 第一时间接触的 比如
ArrayList 之后 再是 Map Set 接口
之后发现 容器类有存储就有插入 查询 删除 修改 这些基本操作就涉及到了时间的效率问题

ArrayList 和 HashMap 同时插入等量的对象量 进行同一个对象 查找
HashMap 几乎不用时间 而 Array List 需要花大量时间去遍历再得到
由于HashMap是键值对 知道键就可以查询 速度很快

用空间换时间的思维方式:

由HashMap的高性能 对其为何如此做出分析 才得知其Hashcode
也就是存在于HashMap 的每一个对象都有一个HashCode(散列值)
hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。

就如数组的下标一样 知道脚标直接就能找到 不同的是 键是唯一但键可以对应多个值 要特定查询时 处理知道键去找对应值 也可以做个分类把属于同一类的值分在一个键 再得知键 之后用equals再找 ,当然这在空间上花费也就多了 但是时间上节省了

说到HashMap 不难提及 Hashset
Hashset 在其中封装了HashMap 所以实质是你在实例化Hashset对象之后进行数据插入是插入键 因此它不允许有重复数据
怎样判断不重复 —— hashCode不一样 一定不重复 一样 在看其中对应的值 利用equals 判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值