java中的集合(二)List

1、什么是List?

List是继承于collection的一种集合。List是用于存储多个相同class实例的集合。

2、为什么会出现List?

在java中我们最先知道的保存一系列的相同元素的器具是数组。但是由于数组长度在构建的时候就必须指定好,但是很多情况下是不满足的,因为很多情况我们不知道具体的长度,需要能灵活对待,因此就诞生了List。

3、List的特点

a、List的设计是有序的,那么为什么List是有序的呢?

LIst的实现子类可以分为3种,一是ArrayList,一个是LinkedList, 一个是vector

其中ArrayList,vector 的底层是数组,数组大家都知道是可以通过索引拿到对应元素的,而且也是有序的,因此List是有序的

对于 LinkedList来说,底层是双向链表,双向链表肯定是有序的,因为有双向的指针,因此存取顺序就可以得到保证。

b、List是不保证唯一的,也可以存放null?

由于是存放元素于数组中,无需判断是否重复。

4、线程安全问题

对于一个集合类来说,他的添加方法都会有多线程异常的隐患存在,那么对于List来说,有什么子类是线程安全的么?

List中的线程安全的类有很多,比较重要的是vector 和CopyOnWriteArrayList,以及线程安全包装类。

5、vector 实现线程安全的原理

vector 是线程安全的List,是源于他的所有方法都是被sync锁住的,因此都是同步的方法,因此是线程安全,不过也正因为如此他的性能也比较低。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值