以下是经过个人学习之后 对于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 判断。