文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JAVA常见的8种数据结构

2023-09-07 05:56

关注

        Java中有8种常见数据结构(如上图所示)

       1、 数组(Arrary)

                数组是一种线性结构的数据,连续的存储空间和相同的类型数据。查询速度快,但是数组的容量固定,无法扩容,只能存储同类型的数据,对于添加和删除元素比较慢

        2、栈(Stark)

                栈是一种先进后出的一种结构,好比水桶。例如虚拟机栈,方法栈等

        3、链表(Linked List)

                链表是一种线性的链式结构,链表的内存不是连续的,前一个节点存储的地址不一定就是一个元素,可能是一个引用,通过这个引用可以拿到对应的对象。链表是通过一个节点指向另一个节点的地址将元素串起来。

                单向链表:最简单的链表格式。链表的最小单元为节点,每一个节点包含了数据和指向下一个节点的指针。

                双向链表:两个方向的链表。链表的每个节点包含了数据以及前一个节点地址的指针和后一个节点的地址指针。这种数据结构的好处是通过当前节点可以通过时间复杂度o(1)很快定位到前置节点和后置节点,但是通过前置指针和后置指针的配置增加了内存的消耗。

                循环链表:跟双向列表差不多,但是唯一的区别就是尾节点的后置指针指向头节点,头节点也有指针指向了尾节点。

        3、哈希(Hash)

                哈希也叫做散列。通过key-vlue的方式存储,在很大程度上提高了数据的查询,增加和删除。hash结合数组和链表的特性(数组查询快,链表增删快)。

                Java最经典的HashMap的底层实现是数组+链表+红黑树

                hash函数在hash表中起到至关重要作用,数据通过hash函数生成一个固定的hash值,通过hash值可以很快的定位到元素。但是hash值不是唯一的,就将hash值相同的放入链表中,如果链表的长度超过8,或者大小超过64,就将链表转化为红黑树。

        4、队列(Queue)

                队列是特殊的线性结构,一种先进先出的数据存储结构,数据的删除操作只能在头部操作,插入在尾部操作。

        5、树(Tree)

                树是一种线性结构,有节点组成的集合。

                二叉树:每一个节点最多有两个子树

                完全二叉树:除了最外层节点,其他的节点都达到最大的层数

                满二叉树:一个树的节点要么是叶子节点,要么就是有两个节点

                平衡二叉树:任何节点的子树高度差不超过1;

                二叉查找树:任意节点的左子树都不能为空,并且左子树所有节点的值都小于根节点;任意节点的右子树不能为空,并且右子树所有节点的值都大于根节点;任意节点的左右子树都是一个二叉查找树。

                B树:一种堆读写优化的自平衡二叉树,在数据库索引的常用索引数据的结构。

                B+树:所有非叶子节点都是索引部分,节点中仅包含根节点的最大或者最小的关键字;所有叶子节点包含了所有关键字的信息以及含有这些关键字记录的指针,而且叶子节点数据根据关键节点的大小从小到大排列;m个子树的中间节点包含有m个元素,每个元素不包含数据,只包含索引。

                红黑树

                红黑树是一种平衡二叉树,通过颜色约束树的平衡。每一个元素要么红色,要么黑色;根节点一定是黑色;每个叶子节点都是黑色的;如果一个节点为红色,那么他的所有子节点都是黑色,因为每一条路径上都不能出现相邻两个节点是同一颜色;每一个叶子节点的所有路径存在的黑色节点都相同。

        6、堆(Heap)

                堆是一种特殊的树形结构,父节点的值大于等于子节点的值或者小于子节点的值。对于max heap根节点是所有节点的最大值 或者min heap根节点值是所有节点最小的值。

        7、图(Graph)

                一个图就是一些顶点的集合,这些顶点通过一系列边结对(连接)。顶点用圆圈表示,边就是这些圆圈之间的连线。顶点之间通过边连接。

                节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。

        

 

来源地址:https://blog.csdn.net/m554062212/article/details/127916390

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯