26-集合--List子类特点+List子类(Vector+ArrayList+LinkedList)+Enumeration+ArrayList存储自定义对象

一、List的子类及特点

1、Vector:有角标。内部是数组数据结构,是同步的。效率低,增删、查询都很慢(几乎不使用Vector)。大小可变(数组100%延长)

2、ArrayList:有角标。内部是数组数据结构,是不同步的。替代了Vector,查询的速度快。大小可变(数组50%延长,节省空间,提高效率)

3、LinkedList:有角标。内部是链表数据结构(双向链表),是不同步的。效率高,增删元素的速度很快

注:集合中,只有Vector是同步的,其余都是不同步的。但多线程不用Vector,要么给ArrayList加锁,要么用其他方式

二、Vector

1、Vector类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector的大小可以根据需要增大或缩小,以适应创建Vector后进行添加或移除项的操作

2、数组数据结构的特点

(1)每一个元素上都带着编号

(2)用的是连续的存储

3、JDK 1.0版本,集合只有一个,就是Vector。JDK 1.2版本,有了集合框架(各种数据结构),出现了List接口,Vector才实现了List接口,成为集合框架中的一员

注:与新Collection实现不同,Vector是同步的(线程安全的)

三、ArrayList

1、List接口的大小可变数组的实现

2、ArrayList底层是数组结构,存储空间连续,查询快,增删慢(角标不变,插入位置之后的元素自动顺延 -- 牵一发而动全身)

3、ArrayList是不同步的。多线程时,需要给ArrayList加锁将添加、删除方法放在同一个锁中,即可保证线程安全

eg:List list = Collections.synchronizedList(new ArrayList(xxx));

4、可变长度数组:也叫大小可变数组、可增长的数组。实现原理:创建一个新数组,将原来数组中的内容都复制到新数组中来(数组的长度是固定的)。Vector是百分之百延长,ArrayList是百分之五十延长 -- 节省空间,提高效率

5、构造方法

(1)ArrayList():构造一个初始容量为10的空列表

(2)ArrayList(Collection<? extends E> c):构造一个包含指定集合c的元素的列表

(3)ArrayList(int initialCapacity):构造一个具有指定初始容量的空列表

6、ArrayList特有的方法

(1)void ensureCapacity(int minCapacity):ArrayList的扩容方法。如有必要,增加此ArrayList实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数

注:Array

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值