ArrayList

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 增删快,查询慢。不够精确

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值