我是靠谱客的博主 鲜艳大侠,最近开发中收集的这篇文章主要介绍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 增删快,查询慢。不够精确

最后

以上就是鲜艳大侠为你收集整理的ArrayList的全部内容,希望文章能够帮你解决ArrayList所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部