专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

javase(数组、链表、散列表优缺点)

一、数组

35_1.png

1、特点

(1)数组的长度是固定的,也就是说存储的元素的个数是确定的,数组的大小一旦确定就不能更改了。

例如:定义一个能存储三个元素的数组,当存储第四个元素的时候会出现错误。

(2)数组是引用数据类型

(3)数组中存储的数据的数据类型一定要一致

(4)在内存中占用连续的内存空间,因此,数组不能定义的太大

(5)访问方式:直接访问

(6)存储密度等于1

2、优点

(1)访问快,时间复杂度为O(1)

3、缺点

(1)插入和删除的时候需要移动大量的元素,效率较低

(2)数组的长度固定

(3)内存必须连续

(4)所有元素数据类型必须相同

二、链表

35_2.png

1、特点

(1)链表类型众多,有单向链表、双向链表、循环链表,每一个结点由两部分组成,

(2)存储上:不一定占用连续的空间,且不需要事先分配空间,元素个数不确定

(3)访问方式:顺序访问

(4)存储密度小于1(分为数据域和指针域)

2、优点

(1)增删快,时间复杂度为O(1)

35_3.png

3、缺点

(1)只支持顺序访问,时间复杂度为O(n)

三、散列表(哈希表)

1、冲突

将六个元素放到容量为七的数组中的时候,虽然数组的容量大于元素的个数,但是,经过哈希函数计算后可能有多个元素映射到同一个位置,这就是冲突,冲突不能避免,但是可以减少冲突的发生。

常用的哈希函数有:除留余数法、二次探测法、链地址法等

2、链地址法

35_4.png

基本思想:相同哈希地址(根据哈希函数得出)的记录链成一单链表,m个哈希地址就设m个单链表,然后用用一个数组将m个单链表的表头指针存储起来,形成一个动态的结构

链表长度达到8并且元素的个数超过64时,将变为红黑树。

3、特点

(1)由哈希值不能得出原始数据

(2)相同的数据哈希值相同

(3)哈希算法的冲突要尽可能小

4、优点

提高了插入(虽然是基于数组的,但是插入的时候直接根据函数确定插入的位置,不需要移动其他元素)和查询的效率

5、缺点

(1)基于数组的,数组创建后难于扩展某些哈希表被基本填满时,性能下降得非常严重,是先要确定存储的数据量

(2)也没有一种简便的方法可以以任何一种顺序〔例如从小到大〕遍历表中数据。

文章永久链接:https://tech.souyunku.com/22612

未经允许不得转载:搜云库技术团队 » javase(数组、链表、散列表优缺点)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们