栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java学习 -- 简单分析ArrayList实例化的过程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java学习 -- 简单分析ArrayList实例化的过程

ArrayList作为List接口的实现类,是Java为我们提供的一个容器,它对应着数据结构中的顺寻表结构,并且提供了一组针对于表中元素的增删改查操作。这里主要是简单分析一下ArrayList实例化的过程,以及它的扩容机制,这可以有助于我们更加深刻的理解顺序表结构,以及更好的使用ArrayList。如果有不正确地方,还请大佬们可以指出。

实例化

ArrayList中提供了3种重载的构造器:

  1. ArrayList()
ArrayList list = new ArrayList<>();

  1. ArrayList(int initialCapacity)

    指定初始化容量

List list = new ArrayList<>(255);

  1. ArrayList(Collection c)

将Collection的实现类作为参数实例化ArrayList对象,该构造器会将参数对象中存储的元素拷贝到实例化的ArrayList对象中。

Collection collection = new ArrayList<>(1);
List list = new ArrayList<>(collection);  // 参数的泛型必须是实例化对象指定的泛型或其子类

自动扩容

ArrayList()添加元素使用add()方法,该方法提供了几种重载形式,此处主要介绍add(E e)方法,以及在添加过程中的扩容机制。

总结
  1. ArrayList在实例化时,如果使用空参构造器、指定初始化容量为0或者指定的集合为空集合(数组长度为0),则在初始化时默认指向了一个共享的空数组,长度为0。这是JDK8.0之后的改变,目的是节省资源。
  2. 当第一次添加元素时,才会在底层为该对象创建数组。如果使用空参构造器实例化list,则数组默认容量为10。
  3. 如果是其它另外两种情况,则数组默认容量为1。(size + 1)
  4. 当需要扩容时,会对数组进行1.5倍的扩容。

建议:在开发中使用带参构造器:ArrayList(int capacity);,目的是为了防止数组频繁扩容,提高效率。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/280976.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号