ArrayList的基本使用及底层解析

本文介绍了ArrayList的基本使用,包括构造方法、add、remove、clear和clone方法的实现。深入探讨了ArrayList扩容机制,重点讲解了grow(int minCapacity)方法。同时,讨论了modCount在并发修改异常中的作用,以及浅拷贝与深拷贝的概念和区别。
摘要由CSDN通过智能技术生成

ArrayList的概述和基本使用


前言

数组的长度在程序运行期间不可以发生改变,
但是ArrayLIst集合的长度是可以随意变化的。

类 ArrayList<E>尖括号里面的是泛型;
泛型:也就是装在集合当中的所有元素全都是统一的类型。
注意:泛型只能是引用类型不能是基本类型

为什么泛型只能是引用类型?
	java泛型是使用类型擦除来实现的,类型会被擦除为Object,也就是说泛型在底层都会被强制转换为Object类型。像是(Object)1这种强制转换在理论上
来说是会报类型转换错误的。但是编译器做了处理:(Object)1->(Object)Integer.valueOf(1)。而基本类型不能转换为Object类型,所以在编译时期,就会指出错误。


ArrayList<String> list=new ArrayList<>();
从jdk7开始右边的尖括号可以不写类型,但是左边必须要写

注意事项:1、对于ArrayList集合来说,直接打印得到的不是地址值而是内容,如果内容是空的,得到的是空的中括号
public class Demo1ArrayList {
   
    public static void main(String[] args) {
   
        ArrayList<String> list=new ArrayList<>();

        list.add("Arvin");
        list.add("Kevin");
        System.out.println(list);
    }
}

一、常用方法

如果想往ArrayList中存放基本类型数据,必须要使用基本类型对应的包装类
包装类:
byte    Byte
short   Short
int       Integer    特殊
long     Long
float     Float
double  Double
char    Character   特殊
boolean    Boolean

ArrayList当中常用的方法

public boolean add(E e),向集合当中添加元素,参数的类型和泛型一致
备注:对于ArrayList集合来说,add添加动作是一定成功的,所以返回值可以不用
但是对于其它集合来说,add添加动作不一定成功,所以返回值代表添加是否成功。

public E get(int index);从集合当中获取元素,参数是索引编号,返回值就是对于位置的元素。

public E remove(int index);从集合当中删除元素,参数是索引编号,返回值就是被删除的元素。

public int size();获取集合的尺寸长度,返回值是集合中包含的元素个数。

void clear() 从列表中删除所有元素。  

boolean contains(Object o) 如果此列表包含指定的元素,则返回 true 。
 
boolean isEmpty() 如果此列表不包含元素,则返回 true 。  

二、ArrayList底层

ArrayList有序而且查询极快,因为底层是动态数组实现的,故我们可以通过数组索引的下标定位元素所在的位置。

ArrayList数组的三种构造方法

指定初始集合容量

  public ArrayList(int initialCapacity) {
   
        if (initialCapacity > 0) {
   
        //底层创建指定初始容量的数组
            this.elementData = new Object[initialCapacity];
        } else if (initialCapacity == 0) {
   
        //底层创建空数组
            this.elementData = EMPTY_ELEMENTDATA;
        } else {
   
            throw new Illega
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值