下面介绍ArrayList的三种初始化

1.无参构造

如果调用的是无参构造 数组其实是空数组 在第一次add的时候开始进行扩容 生成一个默认长度为10的数组。

2.有参构造(int)

直接用传进来的参数当作数组的长度。

3.有参构造(collection)

直接传进来一个collection类型的对象时,会调用toArray()方法,比如:

ArrayList list1 = new ArrayList(1);
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
ArrayList arrayList = new ArrayList(list1);

内部直接调用 list1.toArray ,将得到的数组赋值给ArrayList内部数组,倘若此处声明的是HashSet也是一样,将hashSet.toArray赋值给内部数组

ArrayList list1 = new ArrayList(1);
HashSet hashSet = new HashSet();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
hashSet.addAll(list1);
ArrayList arrayList = new ArrayList(hashSet);

*注意此处的HashSet 使用addAll方法时,是使用增强for循环一个一个赋值。

4.关于扩容

每次add添加元素时,会首先用size+1得到一个最小容量,然后用这个容量和数组原有长度进行比较,如果超出原有长度,会进行扩容,扩容的原则是,原有长度+原有长度的一半,如果还不够,就扩容到最小容量。其中扩容操作使用Arrays.copyof

5.应用(此处是B站 上硅谷课程的截图,关于去除ArrayList中重复数字的例子)

ArrayList的初始化常用方式,扩容,和应用(去重)相关推荐

  1. Arraylist理解(2)扩容

    我们先回顾一下之前的所说过的数组,话不多说,上代码: 老规则,我们继续画一画,加深一下印象,上图: 这个图我们去掉了ArrayList初探 - 知乎专栏 一文图里那些无用的细节(方法区,常量池等),方 ...

  2. Copy ArrayList的四种方式

    文章目录 简介 使用构造函数 使用addAll方法 使用Collections.copy 使用stream 总结 Copy ArrayList的四种方式 简介 ArrayList是我们经常会用到的集合 ...

  3. 线程间通信的常用方式

    线程间通信的常用方式 1.简介 线程通信简单来说就是实现线程的交替工作,传递信息.例如在一个方法中我有两个线程A和B在运行,我希望线程A先向一个集合里面循环新增数据,当增加到第五次的时候,线程B才开始 ...

  4. 线程同步常用方式与区别

    在介绍线程同步/互斥之前,我们先要理解同步与互斥的概念,引用书上的解释来说明这2个概念: 1.线程(进程)同步的主要任务 在引入多线程后,由于线程执行的异步性,会给系统造成混乱,特别是在急用临界资源时 ...

  5. Java集合转数组 数组转集合的几种常用方式

    Java集合转数组 数组转集合的几种常用方式 1,数组转集合 // 数组 转集合String[] array = new String[]{"1","2",&q ...

  6. 学习 clip-path属性 和 常用方式

    clip-path 属性 clip-path 属性是 clip 属性的升级版. clip-path 属性使用裁剪方式创建元素的可显示区域.区域内的部分显示,区域外的隐藏. clip 属性只能作用于 p ...

  7. 【方法整理】Oracle 获取trace跟踪文件名的几种常用方式

    [方法整理]Oracle 获取trace跟踪文件名的几种常用方式 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...

  8. Silve37.Silverlight和ASP.NET相互传参的两种常用方式(QueryString,Cookie)

    在本节中将讲述Silverlight和ASP.NET页面的相互传参的两种常用方式:Cookie和QueryString.首先我们新建一个名 为SLConnectASP.NET的Silverlight应 ...

  9. Windows校验文件哈希hash的两种常用方式

    大家经常都到哪儿去下载软件和应用程序呢?有没想过下载回来的软件.应用程序或资源是否安全呢?在 Windows 10 和 Office 2016 发布当初,很多没权限的朋友都使用第三方网站去下载安装映像 ...

  10. Ngnix安装的几种常用方式

    Ngnix安装的几种常用方式 本文介绍了如何安装NGINX开源. 在稳定版还是主线版之间进行选择 在预编译的程序包和从源代码进行编译之间进行选择 安装预编译包 预建套件中包含的模块 安装预建的Cent ...

最新文章

  1. 大受褒扬,BCH中国开发者走向世界!
  2. socket不能bind请求的地址_socket通信原理
  3. 分数相同名次排名规则C语言,如何给数据排名(相同分数相同名次)-excel篇
  4. ad20如何导入库_脱水防锈油如何使用才正确?
  5. c语言图像函数怎么用,请教 怎么才能用C输出一个函数的图像?大侠 帮帮忙啊...
  6. Atom飞行手册翻译: 3.8 编写spec
  7. 【Linux】shell脚本执行错误 $‘\r‘:command not found
  8. struts2 配置 自学练习 list jsp页输出 中文转英文首字母
  9. python-excel 批量输出文件名字与打开excel文件
  10. 集体智慧编程_第十章寻找独立特征
  11. 机器人技术基础pdf
  12. svm对未知数据的分类_SVM多分类之一对一与一对多
  13. mac mojava 安装php56的正确姿势
  14. 转 网页游戏外挂的设计与编写:QQ摩天大楼3
  15. 扁豆凝集素LCA/LcH填料/小扁豆凝集素-琼脂糖凝胶/双花扁豆凝集素DBA/黑皮扁豆凝集素
  16. 3D Food Printing【3D食物打印】
  17. python画双折线图-python双折线图
  18. 数学------为什么“负负得正”
  19. Android 自定义锁屏_三星Key Cafe 2021最新版下载-三星Key Cafe自定义键盘输入app v1.0.00.26...
  20. 设置谷歌浏览器安全级别

热门文章

  1. ASP.NET MVC Framework体验(1):从一个简单实例开始(转)
  2. 自定义头文件之二------hlib.h(慢慢更新)
  3. bat循环打印输出1到10
  4. c语言数组的概念和指针的加减使用
  5. Android应用模块之间通信模式
  6. 软工导论 12-13-2 实验任务一
  7. 几个学习git的地方
  8. 上一页、下一页链接(采用分页方式)
  9. [导入]XACT与X3DAudio整合的问题
  10. GIST特征描述符使用