JAVA集合相关数据结构详解

特点:先进后出
我们可以把栈内存的结构想象成一个弹夹,而一个个元素就相当于一颗颗子弹,当把元素存入集合中时,相当于把子弹压入弹夹,这叫做入栈,也叫压栈,元素一个一个进去,最先进的就被压在了集合最底层(栈底),而出口和入口又是同一个,等要取出时,就得从最顶层(栈顶)开始一个一个元素取出,也叫出栈或弹栈,所以规则是先进后出;在这里插入图片描述

队列

特点: 先进先出
队列类似于过安检,谁先排队(入栈),谁就先安检(出栈);在这里插入图片描述

数组

特点: 查询快,增删慢
查询快:因为在堆中新建一个数组时,会赋予它地址,通过地址可以查到这个数组,再通过这个数组的索引,可以快速查询到每一个元素;
增删慢:数组的增删不是简单的增加一个元素或者减少一个元素,因为数组的长度是固定的,不可更改的,所以每次新增或删除元素时,都会在堆内存中新建一个新的数组;
比如源数组是[1,2,3,4],它的地址值是0x11,变量名是arr,现在要把元素4删除,那么实际上在堆内存会新建一个新数组[1,2,3],(达到了删除的目的)新数组的地址值比如是0x88,那么变量名array会重新指向新数组0x88,源数组0x11会被垃圾回收,新增元素也是同理;
在堆内存中,频繁的创建数组,复制元素,销毁数组,会导致效率低下;在这里插入图片描述

链表

特点: 查询慢,增删快;
查询慢: 链表中的地址不是连续的,每次查询元素,都必须要从头开始查询;
增删快: 链表结构,增加/删除一个元素时,对链表整体的结构没有影响,所有速度快;
链表中的每一个元素又称为节点,而每一个节点都由三部分组成:自己的地址,数据,下一个节点的地址;
链表又分为单向链表和双向链表:
单向链表: 链表中只有一条链子,不能保证元素的顺序;
双向链表: 链表中有两条链子,一条链子专门记录元素的顺序,是一个有序的集合;在这里插入图片描述在这里插入图片描述

红黑树

特点: 趋近于平衡树,查询的速度非常快,查询叶子节点最大次数和最小次数不能超过两倍;
约束:

  1. 节点可以是红色或者黑色;
  2. 根节点是黑色的;
  3. 叶子节点(空节点)是黑色的;
  4. 每个红色的节点的子节点都是黑色的;
  5. 任何一个节点到其每一个叶子节点的所有路径上黑色节点的数量是相同的;
    在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值