ArrayList的分析

ArrayList是一个数组队列,相当于动态数组,通过数组实现的,能够动态的增长。是线程不安全的。继承了AbstractList,实现了LIst,RandomAccess,Cloneable,java.io.Seriable接口,

 继承AbstractList,实现了List接口。它是一个数组队列,提供了相关的增删改查,遍历等操作。

 实现了RandomAccess接口,提供了随机访问接口。RandomAccess接口是java中用来被List实现,为List提供快速访问功能。(RandomAccess接口中是空的,应该是一个标记接口,用于判断一个list集合,是否实现了RandomAccess接口,是可以一个方法,不是另一个方法)为了让我知道用什么方式去获取数据性能更好。

实现了Clineable接口,就可以使用Object.clone()f方法。

实现Serializable接口,实现序列化,表明该类可以被序列化,就是能够变成字节流传输,然后还能从字节流变成原来的类。

List接口下有两个实现,一个是Vector,这个加了synachronized来保证同步,一个是ArrayList是高效的线程不安全的集合。

DEFAULT_CAPACITY = 10;因此调用无参构造时默认长度是10;
自动扩容grow方法: int newCapacity = oldCapacity + (oldCapacity >> 1       就是变成1.5倍长。
elementData = Arrays.copyOf(elementData, newCapacity);        新的容量确定好后用copyof方法 copy数组。

add(int index,E element) 指定位置插入 调用了System.arrayCopy()将后面的元素后移一位 复杂度O(n)

remove和add有异曲同工之处。

 

总结

1ayyayList 可以存放null;

2arrayList和数组最大的区别就在于自动扩容grow()方法;

3arrayList适合查询,不适合删除。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值