0
点赞
收藏
分享

微信扫一扫

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

崭新的韭菜 2022-02-26 阅读 43
java


0.基本数据结构

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

        1.线性表

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

                1.1顺序表

数组(一维,二维)

                1.2链表

        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的性能!

举报

相关推荐

0 条评论