当前位置: 首页 > news >正文

哈希表的学习

哈希表

散列表

散列(Hashing)通过散列函数(哈希函数)将需要参与检索的数据与散列值(哈希值)关联起来,生成一种便于搜索的数据结构,我们称其为散列表(哈希表)。

散列函数也加哈希函数,哈希函数可以对一个目标计算出其对应的哈希值,并且,只要是同一个目标,无论计算多少次,得到的哈希值都是一样的结果,不同的目标计算出的结果几乎都不同,哈希函数在现实生活中应用十分广泛,比如很多下载网站都提供下载文件的MD5码校验,可以用来判别文件是否完整,哈希函数多种多样,目前应用最为广泛的是SHA-1和MD5。

我们可以利用哈希值的特性,设计一张全新的表结构,这种表结构是专门为哈希设立的,我们称其为哈希表。我们可以将这些元素保存到哈希表中,而保存的位置则与其对应的哈希值有关,哈希值是通过哈希函数计算得到的,我们只需要将对应元素的关键字(一般是整数)提供给哈希函数就可以进行计算了,一般比较简单的哈希函数就是取模操作,哈希表长度是多少(长度最好是一个素数),模就是多少。

保存的数据是无序的,哈希表在查找时只需要进行一次哈希函数计算就能直接找到对应元素的存储位置,效率极高。

package com.test.collection;public class HashTable<E> {private final int TABLE_SIZE=10;private final Node[]TABLE=new Node[TABLE_SIZE];//放入头结点public HashTable(){for (int i = 0; i < TABLE_SIZE; i++)TABLE[i]=new Node<>(null);}//插入public void insert(E obj){int index=hash(obj);Node<E>head=TABLE[index];Node<E>node=new Node<>(obj);node.next=head.next;head.next=node;}//判断是否包含public boolean contains(E element){int index=hash(element);Node<E>node=TABLE[index].next;while (node!=null){if(node.element==element)return true;node=node.next;}return false;}private int hash(E obj){ //哈希函数,计算出存放的位置int hashCode=obj.hashCode();//每一个对象都有一个独一无二的哈希值,可以通过hashCode方法得到(极小概率出现相同情况)return hashCode%TABLE_SIZE;}public String toString(){StringBuilder builder=new StringBuilder();for (int i = 0; i < TABLE_SIZE; i++) {Node<E>head=TABLE[i].next;while (head!=null){builder.append(head.element+"->");head=head.next;}builder.append("\n");}return builder.toString();}private static class Node<E>{private final E element;private Node<E> next;private Node(E element){this.element=element;}}
}

相关文章:

  • Sentinel源码—7.参数限流和注解的实现二
  • 用一个大型语言模型(LLM)实现视觉与语言的融合: Liquid_V1_7B
  • vscode 打开新页签
  • 你学会了些什么221016?--请求如何到达后端并得到响应
  • 4.21总结
  • Kafka 详细解读
  • 探索大语言模型(LLM):ReAct、Function Calling与MCP——执行流程、优劣对比及应用场景
  • 使用Cloudflare加速网站的具体操作步骤
  • 高级java每日一道面试题-2025年4月19日-微服务篇[Nacos篇]-Nacos未来的发展方向和规划有哪些?
  • 图像预处理-图像轮廓特征查找
  • Web 前端打包工具与构建系统的进阶指南
  • 07前端项目----面包屑
  • JVM有什么调优参数?
  • Java秒杀功能-案例
  • 丝杆升降机蜗轮蜗杆加工工艺深度解析:从选材到制造的全流程技术要点​
  • 软件工程中的维护类型
  • 模型的RAG
  • 运营商二要素认证API接口有哪些发展前景?
  • 基于超启发鲸鱼优化算法的混合神经网络多输入单输出回归预测模型 HHWOA-CNN-LSTM-Attention
  • 【项目日记(三)】
  • 五一出游火爆!热门线路抢票难度堪比春运,有热门目的地酒店价格涨近4倍
  • 美股再遭重挫,标普500指数11个板块全线溃败
  • 曼谷没有“邻家男孩”:跨境追星族经历的“余震”
  • 对话地铁读书人|财务管理孟先生:老婆让我看《三体》
  • 外媒:罗马教皇方济各去世
  • 美国多地举行抗议活动,特朗普经济政策支持率创新低