ArrayList的初始化常用方式,扩容,和应用(去重)
下面介绍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的初始化常用方式,扩容,和应用(去重)相关推荐
- Arraylist理解(2)扩容
我们先回顾一下之前的所说过的数组,话不多说,上代码: 老规则,我们继续画一画,加深一下印象,上图: 这个图我们去掉了ArrayList初探 - 知乎专栏 一文图里那些无用的细节(方法区,常量池等),方 ...
- Copy ArrayList的四种方式
文章目录 简介 使用构造函数 使用addAll方法 使用Collections.copy 使用stream 总结 Copy ArrayList的四种方式 简介 ArrayList是我们经常会用到的集合 ...
- 线程间通信的常用方式
线程间通信的常用方式 1.简介 线程通信简单来说就是实现线程的交替工作,传递信息.例如在一个方法中我有两个线程A和B在运行,我希望线程A先向一个集合里面循环新增数据,当增加到第五次的时候,线程B才开始 ...
- 线程同步常用方式与区别
在介绍线程同步/互斥之前,我们先要理解同步与互斥的概念,引用书上的解释来说明这2个概念: 1.线程(进程)同步的主要任务 在引入多线程后,由于线程执行的异步性,会给系统造成混乱,特别是在急用临界资源时 ...
- Java集合转数组 数组转集合的几种常用方式
Java集合转数组 数组转集合的几种常用方式 1,数组转集合 // 数组 转集合String[] array = new String[]{"1","2",&q ...
- 学习 clip-path属性 和 常用方式
clip-path 属性 clip-path 属性是 clip 属性的升级版. clip-path 属性使用裁剪方式创建元素的可显示区域.区域内的部分显示,区域外的隐藏. clip 属性只能作用于 p ...
- 【方法整理】Oracle 获取trace跟踪文件名的几种常用方式
[方法整理]Oracle 获取trace跟踪文件名的几种常用方式 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...
- Silve37.Silverlight和ASP.NET相互传参的两种常用方式(QueryString,Cookie)
在本节中将讲述Silverlight和ASP.NET页面的相互传参的两种常用方式:Cookie和QueryString.首先我们新建一个名 为SLConnectASP.NET的Silverlight应 ...
- Windows校验文件哈希hash的两种常用方式
大家经常都到哪儿去下载软件和应用程序呢?有没想过下载回来的软件.应用程序或资源是否安全呢?在 Windows 10 和 Office 2016 发布当初,很多没权限的朋友都使用第三方网站去下载安装映像 ...
- Ngnix安装的几种常用方式
Ngnix安装的几种常用方式 本文介绍了如何安装NGINX开源. 在稳定版还是主线版之间进行选择 在预编译的程序包和从源代码进行编译之间进行选择 安装预编译包 预建套件中包含的模块 安装预建的Cent ...
最新文章
- 大受褒扬,BCH中国开发者走向世界!
- socket不能bind请求的地址_socket通信原理
- 分数相同名次排名规则C语言,如何给数据排名(相同分数相同名次)-excel篇
- ad20如何导入库_脱水防锈油如何使用才正确?
- c语言图像函数怎么用,请教 怎么才能用C输出一个函数的图像?大侠 帮帮忙啊...
- Atom飞行手册翻译: 3.8 编写spec
- 【Linux】shell脚本执行错误 $‘\r‘:command not found
- struts2 配置 自学练习 list jsp页输出 中文转英文首字母
- python-excel 批量输出文件名字与打开excel文件
- 集体智慧编程_第十章寻找独立特征
- 机器人技术基础pdf
- svm对未知数据的分类_SVM多分类之一对一与一对多
- mac mojava 安装php56的正确姿势
- 转 网页游戏外挂的设计与编写:QQ摩天大楼3
- 扁豆凝集素LCA/LcH填料/小扁豆凝集素-琼脂糖凝胶/双花扁豆凝集素DBA/黑皮扁豆凝集素
- 3D Food Printing【3D食物打印】
- python画双折线图-python双折线图
- 数学------为什么“负负得正”
- Android 自定义锁屏_三星Key Cafe 2021最新版下载-三星Key Cafe自定义键盘输入app v1.0.00.26...
- 设置谷歌浏览器安全级别