List集合

定义:
List集合是有序的,可以存储重复的数据
List集合通过记录元素在集合中的元素位置准确的查找元素

List集合体系:
ArrayList 底层使用数组(线程不安全)
LikedList 底层使用链表
Vector 底层使用数组(线程安全的,不推荐使用)

ArrayList集合
定义:
底层使用的是数组,存储的元素是有序的,可以重复存储,通过数组角标来查询更改元素,速度快
删改要改动数组中的角标,所以会导致增删效率低下

ArrayList的增删改查原理

  • ArrayList 集合初始化会有一个默认长度是10的数组, 内部还有一个记录当前元素个数的变量, 当储存的元素个数超过数组长度之后,容量就会扩充一半
  • 当我们去查询集合中的元素时, 需要提供给集合一个角标值, 然后通过这个角标值查找集合中的元素
  • 当我们去删除一个元素的时候, 集合就会根据角标删除这个元素,并且改动其他元素的位置,这就是导致增删缓慢的原因
  • 其实如果我们是连续往集合尾部插入数据的话, 速度其实是非常快的, 因为其他元素的位置不需要改动,但是如果我们插入数据的位置是数组的前面或者中间,速度就会有明显的降低

LinkedList集合
定义:
底层使用的是链表,就好像一条锁链
这个集合中的每一个元素都被封装到一个叫Node的内部类中,然后记录上一个元素和下一个元素的地址,通过手拉手形成一个链条
增删快,查询慢

增删改查的原理
当需要去查询LinkedList集合中的元素时,需要从最开始的元素查找起,然后一层一层往后找,直到找到该元素,这样的动作十分消耗性能
当需要去删除元素的时候, 我们只需要将被删除元素两端的元素重新连接到一起,或者新增的时候将新元素和左右两边的元素连起来就可以了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值