概述
ArrayList获取对象的三种方式:
public ArrayList() ---》 无参构造,长度为0
public ArrayList(int initialCapacity)--》 有参构造,得到长度为 initialCapacity 的集合
public ArrayList(Collection<? extends E> c) -->得到长度为 c的大小的集合
ArrayList无参构造得到的对象,默认长度为0。若(add)添加数据,会有扩容机制
扩容原理:
ArrayList无参构造得到的对象,默认长度为0。
当第一次添加数据,集合的长度扩容到10
后面添加数据,就是前一次的1.5倍。 例如: 10,15,22
计算方式: * >>1+* (右移一位)
小技巧:可以在chrome浏览器的控制台计算
扩容前20次的长度:
addAll方法扩容:
addAll(Collection c)没有元素时,扩容为 Math.max(10,实际元素个数),有元素时为Math.max(原容量1.5倍,实际元素个数)
ArrayList 和 LinkedList
ArrayList:
1. 基于数组,需要连续内存
2. 随机访问快(根据下标访问)
3. 尾部插入,删除性能可以,其他部分插入,删除都会移动数据,因此性能变低
4. 可以利用cpu缓存,局部性性原理
LinkedList
1. 基于双向链表,无需连续内存
2. 随机访问慢(要沿着链表遍历)
3. 头尾插入删除性能高
4 占用内存多
ArrayList 增删慢,查询快。 不够精确
LinkedList 增删快,查询慢。不够精确
最后
以上就是鲜艳大侠为你收集整理的ArrayList的全部内容,希望文章能够帮你解决ArrayList所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复