一、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 集合的更多相关文章

  1. Java 去除 ArrayList 集合中的重复元素

    // One practice package Collection; import java.util.ArrayList; import java.util.Iterator; // 去除 Arr ...

  2. JAVA之ArrayList集合

    /** * ArrayList集合讲解 * 集合的添加.遍历.删除 */package com.test; import java.util.*; public class test7 { /**   ...

  3. java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,

    1.ArrayList 集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 1.1 -ArrayList的构造方法和添加方法 public ArrayLi ...

  4. Java去除ArrayList集合中重复字符串的案例

    ArrayList去除集合中的字符串重复值 分析: A:创建集合对象 B:添加多个字符串元素 C:创建新集合 D:遍历旧集合,获取得到每一个元素 E:拿着个元素到新集合去找,看有没有 有:不进去 没有 ...

  5. Java之ArrayList类(集合)

    集合的由来 我们想存储多个数据,选择的容器可以是数组.而数组的长度是固定的,无法适应数据变化的需求.为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可 ...

  6. ArrayList集合例题,商品库存管理(集合)

    创建车库集合,存进车 public class demo1 { String pinpai; String c; int s; } import java.util.ArrayList; class ...

  7. Java学习:集合双列Map

    数据结构 数据结构: 数据结构_栈:先进后出 入口和出口在同一侧 数据结构_队列:先进先出 入口和出口在集合的两侧 数据结构_数组: 查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组,通过 ...

  8. java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。

    import java.util.*; /* 将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据 ...

  9. java集合 collection-list-ArrayList 去除ArrayList集合中的重复元素。

    import java.util.*; /* 去除ArrayList集合中的重复元素. */ class ArrayListTest { public static void sop(Object o ...

随机推荐

  1. 排序算法-冒泡排序(Java)

    package com.rao.sort; import java.util.Arrays; /** * @author Srao * @className BubbleSort * @date 20 ...

  2. MongoDB executionStats 详细分步查询计划与分步时间(转载)

    mongodb性能分析方法:explain() 为了演示的效果,我们先来创建一个有200万个文档的记录.(我自己的电脑耗了15分钟左右插入完成.如果你想插更多的文档也没问题,只要有耐心等就可以了.) ...

  3. vue文件夹上传组件选哪个好?

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...

  4. 图文详解如何使用VMWare创建一套虚拟机“集群”

    开篇废话 在学习各种高大上的大数据产品也好,模拟部署我们的程序到PRD环境也好,总离不开需要一个机器集群.然而通常我们都没有那么多银子去购买多台云服务器,更没钱购买物理机.所以对于技术研究来说,最经济 ...

  5. 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 ...

  6. 【计算机视觉】ImageNet介绍

    ImageNet介绍 ImageNet 是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库.是美国斯坦福的计算机科学家,模拟人类的识别系统建立的.能够从图片识别物体.ImageNet是一 ...

  7. Python 发送邮件 and 编辑Excel

    记录一下Python 发送邮件的代码,这是半年前写的,不知道现在有什么类库的改动. 类库 import smtplib from email.mime.text import MIMEText fro ...

  8. | C语言I作业01

    C语言I作业01 标签:18软件 李煦亮 1.1 你对软件工程专业了解是怎样? 对软件工程的了解是从人工智能频繁地出现在各大新闻,新闻报道了许多高校针对人工智能开设了相关课程或者专业,软件工程是开设的 ...

  9. dockerfile 命令

    FROM 功能为指定基础镜像,并且必须是第一条指令. 如果不以任何镜像为基础,那么写法为:FROM scratch. 同时意味着接下来所写的指令将作为镜像的第一层开始 语法: FROM <ima ...

  10. docker封装mysql镜像

    一.概述 直接使用官方的镜像 docker pull mysql:5.7 但是mysqld.cnf并没有优化,还是默认的. 二.封装镜像 创建目录 # dockerfile目录 mkdir -p /o ...