范型及散列知识点总结

范型

什么是范型

  • 帮助我们建立类型安全的集合
  • 范型的本质就是数据类型的参数化 范型相当于是数据类型的占位符 告诉编译器 在调用的时候 使用范型的地方要传入实际类型(范型的处理时机是编译时处理)
  • 一般使用T、E、V 来表示范型
  • 范型其实就是一个正常的类型的一个范式 在定义方法或者类的时候 使用范型将相同的类型数据统一声明约定出来 在真正调用的时候 再给定义范型的地方放入真正的具体的类型值 相应的 该类中或者方法中 定义的相同的范型名的地方 就会是相同的传入的具体类型 在使用的时候也会更加有约束性和规范性

为什么使用范型

  1. 保证了类型的安全性(有了强制的类型规定检查)
  2. 取消了类型转换(类型不一致便会报错 则不需要进行类型转换了)
  3. 避免了不必要的封装和拆箱(将返回值类型直接定义出来 不需要在使用的时候进行拆箱和封箱操作了)

如何使用范型(后续文章总结)

范型使用详细使用
参考地址: https://blog.csdn.net/ChenRui_yz/article/details/122935621

散列

散列表

什么是散列表

散列表也叫哈希表,是一种提供键和值的映射关系的数据结构

散列表工作原理

散列表的本质也是数组, 数组的查询效率非常高, 通过数组指针就可以直接找到对应的值。 数组的查找效率就是O(1) 散列表中, 我们根据提供的Key就可以找到相应的Value值, 这时候我们就需要中转站将key值与数组下标进行转换(中间站就是hash函数 一般是通过取余的方式 实现将得到的int类型的hashCode值取余 找到对应的数组下标)

散列表相关操作

写操作

散列的写操作就是在散列表中添加键值对, 通过hash函数 将key转为数组下标 然后在该位置上插入Entry(Entry: key + value)

注意: 不同的key可能会出现相同的下标 那么就会成为哈希冲突
那么如何解决哈希冲突呢?开放寻址法和链表法

  • 开放寻址法
    当数组的下标发生冲突时, 将下一个Entry存储在数组的下一个空位置
  • 链表法
    数组中每个数组模块中 每个对象不仅是一个对象 还是一个链表的头, 当发生哈希冲突的时候 下一个冲突的Entry对象就会接入到对应的链表中
    在这里插入图片描述
读操作

根据哈希函数算数要读key的散列表数组下标, 找到下标后再在该下标里面找是否有找的key。
比如 我们找key为100067的value值 通过hash函数算法找到数组下标为1, 然后在下标为1 的数组内容内查找 是否存储了key10067的Entry对象 找到返回value

hashCode

hashCode其实就是Entry对象通过hash函数 将key转变成的一个数组的下标的值也就是在哈希表中的位置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值