首页 > 其他分享 >7、哈希表

7、哈希表

时间:2022-12-08 17:48:17浏览次数:34  
标签:数据 位置 算法 哈希 表中 散列

哈希表,也叫做散列表,它通过哈希码直接找到指定数据。就和数组中通过索引获取元素一样,很快。

特点:

  1、添加快

  2、查找快

  3、唯一

  4、无序


1、hashCode方法

它返回一个整数,是数据的哈希码。

2、散列算法

它指通过数据的哈希码,计算出数据在哈希表中位置。

例子,除留取余法:

   一个哈希表长度为10,则位置有【0,1,2,3,4,5,6,7,8,9】,一个数据哈希码为1001,散列算法为 y = x % 10 。

     则:1001 %10 = 1,即1001应该存放在哈希表中1的位置。


 

3、哈希表中添加数据

步骤:

  1、使用hashCode方法获取数据的哈希码。

  2、使用散列算法处理哈希码,得到数据存储的位置。

  3、判断:

    (1)、无冲突:该位置为空,添加成功。

    (2)、发生冲突:位置已经有数据了,使用 equals 方法判断位置中是否有重复的元素。

        有相同数据:添加失败

        没有相同数据:添加成功

4、哈希表中查找数据

步骤:

  1、使用hashCode方法获取数据的哈希码。

  2、使用散列算法处理哈希码,得到数据存储的位置。

  3、判断:

    (1)、无数据:数据不在表中。

    (2)、存在数据:依次使用 equals 方法对比数据。


5、装填因子

它指的是要存放数据的个数和哈希表的长度之比。

当装填因子为0.5的时候,哈希表性能达到最优。


6、减少冲突

提高哈希表的效率。

方式:

  1、改善装填因子

  2、改善散列算法

  3、改善处理冲突的方法


Java中的HashSet、HashMap、HashTable(已过时)底层都使用哈希表实现。

 

标签:数据,位置,算法,哈希,表中,散列
From: https://www.cnblogs.com/lurenjia-bky/p/16966780.html

相关文章

  • 一致性哈希算法详解
    一致性哈希是什么,使用场景,解决了什么问题?转载:https://mp.weixin.qq.com/s/hJHMlbQpANwMjx9BetwkUg 1.如何分配请求大多数网站背后肯定不是只有一台服务器提供服务,因......
  • 算法-哈希表、集合、映射
    1、两数之和(简单)题目地址:https://leetcode.cn/problems/two-sum/description/给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的......
  • 一致性哈希通俗笔记
    一致性哈希ConsistentHashing,一种数据结构。内容参考自视频:一致性哈希-ConsistentHashing是什么?为什么系统设计面试中经常会提到?10分钟讲解一致性哈希|系统设计Syst......
  • 跨链技术学习理解(一)公证人机制、哈希锁定
    跨链资产交换问题两个用户在两个链上都有相应的账户,一个用户如何在用A链上的资产交换另一个用户在B链上的等价另一种资产。比如肥兔子想用1个比特币换豆畜子的10个以太。......
  • 11.哈希表
     代码示例:有三部分:1.员工实体Emp,里面有个重要的next属性,标注下一个员工2.员工链表EmpLinkedList,里面包含了head头部信息,以及链表的增删改查3.链表数......
  • 哈希之应用--删除字符串
    一问题描述  两个字符串A、B。从A中剔除存在于B中的字符。比如A=“helloworld”,B="er",那么剔除之后A变为"hllowold"。空间复杂度要求是O(1),时间复杂度越优越好。二......
  • 一本通1456(哈希表板子
     用map<int,bool> #include"bits/stdc++.h"usingnamespacestd;constintN=1e4+5;#defineintunsignedlonglongconstintmod=212370440130137957ll;cha......
  • 「哈希表」最大频率栈(力扣第895题)
    本题为11月30日力扣每日一题题目来源:力扣第895题题目tag:哈希表题面题目描述设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。实现......
  • 代码随想录——哈希表
    有效的字母异位词题目简单/***242.有效的字母异位词字典解法*时间复杂度O(m+n)空间复杂度O(1)*/classSolution{publicbooleanisAnagram(Strings,......
  • 【小航的算法日记】哈希
    一、概念哈希表、哈希函数、哈希碰撞二、模板三、例题题:242.有效的字母异位词给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个......