27集合容器概述及基本数据结构

本文深入探讨了数据结构的基础,包括线性表(顺序表、链表)、栈、队列以及非线性表中的树和图。特别关注了散列表的实现,强调了其在查找操作中的重要性,并提到了Java中的HashMap及其内部优化。同时,介绍了不同查找算法如顺序查找、链式查找和B树。内容涵盖了数据结构的逻辑和物理存储,以及它们在实际编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


0.基本数据结构

按逻辑结构分(画图表示其元素之间逻辑关系)

        1.线性表

        1.0按物理存储结构1.1相邻   1.2不一定相邻

                1.1顺序表

数组(一维,二维)

                1.2链表

对应Java容器的ArrayList和LinkedList

        1.0按操作特性分(以下存储均可选1.1、1.2的一种)

                1.3栈(先进后出,后进先出)

                1.4队列(先进先出)

队列:一般队列,双端队列,限制双端队列(还可细分,有的退化为栈)

        2.非线性表

        2.0按有无环(树、森林其实也是图的大类,只不过因为树用的多单独分类)

                2.1树,森林

                2.2图

图也可以是矩阵的一种,有的不行(因为太多null);类键-值对,但是一个键也是其他键的值。

可分点集和边集

边集:可邻接矩阵,可邻接表;可十字链表,可多重邻接表

                2.2.0按有无方向分

                        2.2.1无向图

有环

连通图

连通分量

                        2.2.2有向图

有环

强连通图

强连通分量

无环

DAG(有向无环图)--可拓扑排序的要求

        带权无环

一般的

AOE网(要求同一起点,同一个终点)----用于流程分析与安排

           

0.1查找的结构

存储结构决定

        1.顺序查找

        2.链式查找

        3.分块查找(也叫索引顺序查找)

(1.和2.结合,块间顺序)

逻辑结构

                   4.B树(多路平衡查找树)

        5.B+树(多路平衡查找树,且值都在叶子也有,且链式连接了)

        6.散列表(邻接表)

我的理解

散列函数对应的值=对应的hashcode

拉链法解释,为什么有hashcode相等

Java数据结构

容器Collection     Collections

线性表list,队列queue,集合set

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

HashMap是Java程序员使用最频繁的的用于键值对(key value)数据处理的容器,在JDK1.7(Java Developmet Kit)时HashMap采取的是数组+链表的形式存储数据,JDK1.8对HashMap进行了存储结构上的优化,引入了红黑树数据结构,极大的增强了HashMap的存取性能!为什么会引入红黑树呢?因为HashMap存在一个问题,即使负载因子和Hash算法设计的再合理,也无法避免出现在链表上拉链过长的问题,如果极端情况下出现严重的Hash冲突,会严重影响HashMap的存取性能,于是HashMap在jdk1.8时,引入了红黑树,利用红黑树快速增删改查的特点来优化了HashMap的性能!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值