Java 之 ArrayList 集合
一、ArrayList 概述
java.util.ArrayList 是 大小可变的数组 的实现,存储在内的数据称为元素。该类是一个 集合类(容器),可以让我们更便捷的存储和操作对象数据。
该类可以不断添加元素,其大小也自动增长,弥补了数组固定长度这一缺点。
java.util.ArrayList 集合数据存储的结构是数组结构。
特点:元素增删慢,查找快。
注意:此集合的实现不是同步的,多线程的,速度快,效率高。
二、ArrayList 使用步骤
1、查看类
java.util.ArrayList<E> : 该类需要 import 导入后使用
<E> 表示一种指定的数据类型,叫做泛型。 E ,取自 Element(元素)的首字母,在出现 <E> 的地方,使用一种引用数据类型将其替换即可,表示这个集合中存储哪种引用类型的元素。
2、查看构造方法
public ArrayList():构造一个内容为空的集合。
基本格式:
ArrayList<String> list = new ArrayList<String>();
在 JDK 7后,右侧泛型的尖括号之内可以留空,但是 <>仍然要写。简化格式:
ArrayList<String> list = new ArrayList<>();
三、构造方法
构造方法:
ArrayList():构造一个初始容量为10的空列表(JDK1.6)
ArrayList(int initialCapacity): 构造一个具有指定初始容量的空列表。
ArrayList(Collection<? extends E> c) 构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的
对于第一个无参的构造方法,来跟踪一下源码:
JDK1.8版本:发现内部初始化为了一个长度为0的空数组 DEFAULTCAPACITY_EMPTY_ELEMENTDATA

JDK1.7版本:也是初始化为长度为0的空数组 EMPTY_ELEMENTDATA;

JDK1.6 版本:初始化为长度为10的数组

思考:为什么要初始化为空数组呢?
这个因为在开发中,很多时候在方法中创建了 ArrayList 的对象作为返回值,但是可能这个里面没有元素,这个时候的话,如果初始化为10的数组,就浪费空间了。
四、常用方法
1、add(Object obj) 方法
源码跟踪(JDK1.8):



源码跟踪(JDK1.9):




总结:
JDK1.8中,第一次添加一个元素时,扩容为长度为10的数组,下次在添加时,会先进行容量的判断,如果够了,就不需要扩充了;如果不够,将扩充为1.5倍。
2、remove(int index) 方法
源码跟踪:

3、remove(Object obj)
源码跟踪:


4、set(int index, E ele) 方法
源码跟踪:

五、存储基本数据类型
ArrayList 对象不能存储基本类型,只能存储引用类型的数据。类似 <int> 不能写,但是存储基本数据类型对应的包装类是可以的。所以,想要存储基本数据类型,<> 中的数据类型,必须转换后才能编写。
基本包装类型:基本包装类型
Java 之 ArrayList 集合的更多相关文章
- Java 去除 ArrayList 集合中的重复元素
// One practice package Collection; import java.util.ArrayList; import java.util.Iterator; // 去除 Arr ...
- JAVA之ArrayList集合
/** * ArrayList集合讲解 * 集合的添加.遍历.删除 */package com.test; import java.util.*; public class test7 { /** ...
- java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,
1.ArrayList 集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 1.1 -ArrayList的构造方法和添加方法 public ArrayLi ...
- Java去除ArrayList集合中重复字符串的案例
ArrayList去除集合中的字符串重复值 分析: A:创建集合对象 B:添加多个字符串元素 C:创建新集合 D:遍历旧集合,获取得到每一个元素 E:拿着个元素到新集合去找,看有没有 有:不进去 没有 ...
- Java之ArrayList类(集合)
集合的由来 我们想存储多个数据,选择的容器可以是数组.而数组的长度是固定的,无法适应数据变化的需求.为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可 ...
- ArrayList集合例题,商品库存管理(集合)
创建车库集合,存进车 public class demo1 { String pinpai; String c; int s; } import java.util.ArrayList; class ...
- Java学习:集合双列Map
数据结构 数据结构: 数据结构_栈:先进后出 入口和出口在同一侧 数据结构_队列:先进先出 入口和出口在集合的两侧 数据结构_数组: 查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组,通过 ...
- java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
import java.util.*; /* 将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据 ...
- java集合 collection-list-ArrayList 去除ArrayList集合中的重复元素。
import java.util.*; /* 去除ArrayList集合中的重复元素. */ class ArrayListTest { public static void sop(Object o ...
随机推荐
- 排序算法-冒泡排序(Java)
package com.rao.sort; import java.util.Arrays; /** * @author Srao * @className BubbleSort * @date 20 ...
- MongoDB executionStats 详细分步查询计划与分步时间(转载)
mongodb性能分析方法:explain() 为了演示的效果,我们先来创建一个有200万个文档的记录.(我自己的电脑耗了15分钟左右插入完成.如果你想插更多的文档也没问题,只要有耐心等就可以了.) ...
- vue文件夹上传组件选哪个好?
一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...
- 图文详解如何使用VMWare创建一套虚拟机“集群”
开篇废话 在学习各种高大上的大数据产品也好,模拟部署我们的程序到PRD环境也好,总离不开需要一个机器集群.然而通常我们都没有那么多银子去购买多台云服务器,更没钱购买物理机.所以对于技术研究来说,最经济 ...
- Expect Command And How To Automate Shell Scripts Like Magic
In the previous post, we talked about writing practical shell scripts and we saw how it is easy to w ...
- 【计算机视觉】ImageNet介绍
ImageNet介绍 ImageNet 是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库.是美国斯坦福的计算机科学家,模拟人类的识别系统建立的.能够从图片识别物体.ImageNet是一 ...
- Python 发送邮件 and 编辑Excel
记录一下Python 发送邮件的代码,这是半年前写的,不知道现在有什么类库的改动. 类库 import smtplib from email.mime.text import MIMEText fro ...
- | C语言I作业01
C语言I作业01 标签:18软件 李煦亮 1.1 你对软件工程专业了解是怎样? 对软件工程的了解是从人工智能频繁地出现在各大新闻,新闻报道了许多高校针对人工智能开设了相关课程或者专业,软件工程是开设的 ...
- dockerfile 命令
FROM 功能为指定基础镜像,并且必须是第一条指令. 如果不以任何镜像为基础,那么写法为:FROM scratch. 同时意味着接下来所写的指令将作为镜像的第一层开始 语法: FROM <ima ...
- docker封装mysql镜像
一.概述 直接使用官方的镜像 docker pull mysql:5.7 但是mysqld.cnf并没有优化,还是默认的. 二.封装镜像 创建目录 # dockerfile目录 mkdir -p /o ...