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