一、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. 红黑树与AVL树比较

    链接地址:https://blog.csdn.net/zhangkunrun/article/details/38336543 B树相对于红黑树的区别 在大规模数据存储的时候,红黑树往往出现由于树的深 ...

  2. jquery保存cookie,php读取cookie操作

    //保存时间 var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Days*24*60*60*1000); //保存内容, ...

  3. PyCharm编写的代码生成可执行文件操作步骤

    1.打开Pycharm.2.打开Terminal(快捷键Alt + F12) 3.安装pyinstaller工具输入:pip install pyinstaller4.生成本项目可执行文件Termin ...

  4. 4.通过HttpMethod执行不同的服务方法

    package Services import ( "context" "fmt" "github.com/go-kit/kit/endpoint&q ...

  5. A Deep Dive into PL/v8

    Back in August, Compose.io announced the addition of JavaScript as an internal language for all new ...

  6. 洛谷P2704 [NOI2001]炮兵阵地题解

    题目描述 司令部的将军们打算在\(N * M\)的网格地图上部署他们的炮兵部队.一个\(N * M\)的地图由N行M列组成,地图的每一格可能是山地(用\("H"\) 表示),也可能 ...

  7. 【树形DP】【P3177】[HAOI2015] 树上染色

    Description 给定一棵 \(n\) 个点的带权树,要求选 \(k\) 个点染成黑色,剩下染成白色,最大化两两同色点之间的距离和. Limitations \(0 \leq k \leq n ...

  8. 使用mxnet实现卷积神经网络LeNet

    1.LeNet模型 LeNet是一个早期用来识别手写数字的卷积神经网络,这个名字来源于LeNet论文的第一作者Yann LeCun.LeNet展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当 ...

  9. ZROI 暑期高端峰会 A班 Day4 生成函数

    一般生成函数 很普及组,不讲了 生成函数是一种形式幂级数,也就是我们只关心系数,不关心未知数具体的值. 比如 \(\sum\limits_{i\ge 0}x^i=\frac{1}{1-x}\).虽然只 ...

  10. vue中使用element-ui自定义主题后,vue-cli跑不起来了

    环境:vue-cli 2.x版本 自己在官网配置了主题并放到了项目中https://element.eleme.cn/#/zh-CN/theme 然后,我的脚手架在我的电脑中休息了几天,就跑不通了呢! ...