ArrayList 背后是一个顺序表,它可以指定存放任意类型的数据
ArrayList类 称动态数组, 同时实现了 Collection 和 List 接口,其内部数据结构由数组实现

ArrayLIst类 是在 java.util 包里面,Java 集合类一般都是在 java.util 包
Arraylist 是以泛型方式实现的,使用必须要先实例化ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问ArrayList实现了Cloneable接口,表明ArrayList是可以clone的ArrayList实现了Serializable接口,表明ArrayList是支持序列化的ArrayList不是线程安全的,在单线程下可以使用ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表add(添加)contains(判定是否包含某个元素)indexOf(查找某个元素对应的位置)get(获取 某个 位置的元素)set(给 某个 位置的元素设为 某个值)remove(删除第一次出现的某个值)clear(清空顺序表) ArrayList( )ArrayList( int initialCapacite)ArrayList(Collection extends E> c)例如:
public static void main(String[] args) {
// 无参构造方法 默认数组大小为 10
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
System.out.println(arrayList);
// 传入指定参构造方法 初始数组大小为 15
ArrayList<Integer> arrayList2 = new ArrayList<>(15);
arrayList2.add(3);
arrayList2.add(4);
System.out.println(arrayList2);
// 那 arr2 的数据存放到 arr3 里
ArrayList<Integer> arrayList3 = new ArrayList<>(arrayList2);
}
ArrayLIst 里的源代码

ArrayLIst 无参数构造方法
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
这个构造方法是没有分配数组内存空间的
当我们调用不带参数的构造方法,使用第一个add方法存储数据到 ArrayLIst 数组时,才会把当前数组开辟 10 个空间
如果存放超过数组大小元素时,是采用 1.5 倍扩容
add :添加新的元素
| 方法 | 方法功能 |
|---|---|
add(E e) |
将元素添加到当前列表的末尾 |
add (int index,E element) |
在当前列表的指定位置添加指定元素 |
addAll(Collection extends E> c) |
将指定的列表添加到此列表的尾部 |
addAll( int index,Collection extends E e> c ) |
在当前数组的指定位置添加指定的数组 |
示范:
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
System.out.println(arrayList);
// 把 0 下标的元素修改为 66
arrayList.add(0,66);
System.out.println(arrayList);
ArrayList<Integer> arrayList2 = new ArrayList<>();
arrayList2.add(3);
arrayList2.add(4);
// addAll 是把另一个数组里的所以元素添加到这个数组元素的末尾
arrayList.addAll(arrayList2);
System.out.println(arrayList);
}
执行结果:

remove :删除指定的元素
| 方法 | 方法功能 |
|---|---|
remove (int index ) |
删除该顺序表中指定下标的元素 |
remove (Object o) |
删除该顺序表中第一个指定的元素 |
removeAll(Collection> c) |
删除指定集合包含的所有元素 |
retainAll() (Collection> c) |
除了指定的元素,其他元素全部删除 |
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("小明"); arrayList.add("小红");
arrayList.add("黑狗"); arrayList.add("白兔");
arrayList.add("金刚"); arrayList.add("黑狗");
arrayList.add("玄武");
System.out.println("最开始:" + arrayList);
// remove 删除 1 下标的元素
String s = arrayList.remove(1);
System.out.println("删除 1 下标元素后:" + arrayList);
// remove 删除指定变量名字,要用 boolean 来判断是否删除成功
boolean flag1 = arrayList.remove("小明");
System.out.println("删除 小明 后:" + arrayList);
// 删除指定的顺序表里所有相同的元素
ArrayList<String> str = new ArrayList<>();
str.add("黑狗");
// 在arrayList 顺序表里 删除 str 里包含的所有相同的元素
boolean flag2 = arrayList.removeAll(str);
System