IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数组链表哈希表的区别 [Java][数据结构] -> 正文阅读

[数据结构与算法]数组链表哈希表的区别 [Java][数据结构]

数组,链表,哈希表的区别

  1. 数组 : 连续的一片连续的存储空间 , 占用内存严重 , 故空间复杂度高, 寻址容易 ,但是插入和删除困难

  2. 链表 : 存储空间松散 , 占用内存宽松 , 通过指针关联前后位置元素, 所以空间复杂度小 , 寻址困难 , 但是插入和删除比较快

  3. 哈希表 : 结合了数组和链表 , 结合了数组和链表两者的特点

    • 元素存储到哈希表底层数组中的位置: index = key.hash() & (len - 1)

HashMap是一个线性数组 , 内部由Entry对象组成 , 每一个Entry对象包括了: key(键 — > 也称之为关键码值) , value(值 --> 真正的数据) , hashCode(hash码值) , next(指针域 --> 指向下一个元素)

  • 注意: HashMap中可以存储null值, key为null值的元素放在数组下标为0的位置对应的链表中

解决Hash冲突的四种方法:

  1. 开放定址法:

开放定址法就是一旦发生了冲突之后就去寻找下一个空的散列地址, 只要散列表足够的, 空的散列地址总能找到, 找到之后就将其录入, 容易发生聚集

  1. 再Hash(哈希)法

再哈希法又叫做双哈希法 , 有多个不同的Hash函数, 当发生了hash冲突的时候, 使用第二个,第三个 …等哈希函数, 计算地址, 直到无冲突,不容易发生聚集,但是增加了计算的时间

  1. 链地址法

每个哈希表结点都有一个next指针, 多个哈希表结点的位置冲突时就将冲突的多个节点合在一起构成一个单向链表 , 被分配到同一个索引上的多个节点可以使用这个单向链表连接起来

  • HashMap就是使用这种方式解决hash冲突的
  1. 建立公共溢出区

将哈希表分为基本表和溢出表两部分,但凡是和基本表发生了冲突的元素我们都填入到溢出表中

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:59:48  更:2022-10-17 13:00:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:50:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码