List集合

本文介绍了List集合的特点,包括元素有序且可重复,以及三种遍历方式。ArrayList作为List的实现,特点是动态数组,适合数据量大且少有修改的情况。LinkedList实现了双向链表,适合频繁的添加和删除操作。Vector线程安全但性能较低,而CopyOnWriteArrayList在写时复制以保证线程安全,适用于读多写少的场景。
摘要由CSDN通过智能技术生成

前言

这篇文章主要是介绍List集合的相关内容

一 . List集合

  List集合特点:

       元素有序的,且可重复。(元素有序不是指,我们存进Lits集合中的什么1,3,7,6他给我们从小到大,或者从大到小这样子,所谓的有序是我们该集合有下标,下标从0开始,然后我们按照什么顺序增加到list集合的,那么他就是什么样子的顺序)。 

  

 List集合遍历:

      根据下标,foreach,迭代器遍历数据。

 

 Lits集合扩容:

      Lits集合当我们实例出来,它的默认初始容量为10,当往List集合里面增加的数据超过10个以后,他就会扩容增加0.5倍,扩容以后就是15。

      新容量 = 原容量 + 原容量 * 0.5

 

  注:vector,ArrayList,LinkedList都是继承List,所以和Lits集合以上三点都是一样的。

二 ArrayList集合

 ArrayList集合是继承List的集合的,所以Lits集合具备的一些特点,ArrayList也是具备的。

 ArrayList集合的特点:

简单数据结构,超出容量会自动扩容,也是和List集合的扩容是一样的。
ArrayList集合动态数组,为什么说是动态数组,因为数组一般能存放多少数据,一般都是定好的,而ArrayList数组是可以根据数据扩容的,所以是一个动态的数组。
内部实现是基于基础的对象数组的,也就是ArrayList集合存放的是对象。
ArrayList集合不适合随机的删除和增加。

三  LinkedList集合

 和List集合用法一样
 线程不安全
LinkedList集合实现双向链表接口,实现从头元素到尾元素的链表和从尾到头元素的链表,目标为了增加元素的检索效率 
适合做随机的增加或者删除

四 Vector集合

线程安全
Vector中所有的方法都是线程同步的,都带有synchronized关键字,所以他的并行性能慢,不建议使用
为什么性能慢?

打个比方,比如一个厕所有三个位置,有一个人去上厕所了,他就直接把最外面的那个门给关了,他一个人进去上厕所,但是他只需要一个位置,但是他把大门锁了,其他人只能在外面等待,结果他自己就上一个位置,其他两个都空着。也就是Vector进去一个他就会上锁,等里面执行完成,在到另外一个。也就是同步锁的一个原理。

五: CopyOnWriteArrayList集合 

线程安全,相比Veator性能更加好
适合读多,写少的的场景
写时复刻
最终一致性
    CopyOnWriteArrayList集合写时复刻和最终一致性什么意思?

   CopyOnWriteArrayList集合这个集合,我觉得是非常有意思的,当我们需要对该数据进行操作时,他会将原本集合中的数据复制过去,然后在复制过去的集合里的元素进行操作,这就是写时复刻,等修改完成,这个修改过的集合就会给到原本的数组哪里,这是最终一致性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值