# 什么是ArrayList?
ArrayList是一个数组队列,相当于 动态数组。底层采用数组实现。
# 注意事项
泛型只能是引用类型,不能是基本类型
如果希望向集合arraylist中存储基本类型,必须使用基本类型对应的包装类
ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOnWriteArrayList。
# 简单使用
package com.leerep.javabase.arraylist;
import java.util.ArrayList;
public class FirstBlood {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
list.add("a");
list.add("b");
System.out.println(list);
}
}
# 数组 VS ArrayList
package com.leerep.javabase.arraylist;
/*
* 注意事项:
* 数组一旦创建在程序运行期间不可变
* ArrayList的长度可以随时改变
* */
import java.util.ArrayList;
public class ArrayVSArrayList {
public static void main(String[] args) {
Actor[] actors = new Actor[3];
actors[0] = new Actor("迪丽热巴", 20);
actors[1] = new Actor("古力娜扎", 20);
actors[2] = new Actor("玛尔扎哈", 20);
System.out.println(actors); //得到的是地址
for (int i = 0; i < actors.length; i++) {
System.out.println(actors[i]); //重写toString方法后,打印对象的具体信息,不重写仍是地址值
}
ArrayList<Actor> al = new ArrayList<>();
for (int i = 0; i < actors.length; i++) {
al.add(actors[i]);
}
System.out.println(al); //重写toString方法后,打印对象的具体信息,不重写数组里仍是地址值
}
}
# 常用方法
package com.leerep.javabase.arraylist;
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListCommonMethod {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("l");
arrayList.add("e"); //add()函数返回值为true或者false ArrayList集合添加动作一定成功,其他集合不一定。
arrayList.add("e");
arrayList.add("e");
arrayList.add("r");
arrayList.add("e");
arrayList.add("p");
System.out.println(arrayList);
//从集合中获取元素,参数是索引
String s = arrayList.get(0);
System.out.println("集合的第一个元素是:" + s);
//获取集合长度
int l = arrayList.size();
System.out.println("集合的长度是:" + l);
//从集合中删除元素,参数是索引
String deleteValue = arrayList.remove(3);
System.out.println("删除集合的第四个元素:" + deleteValue);
System.out.println(arrayList);
//集合遍历
for (int i = 0; i < arrayList.size(); i++) {
System.out.print(arrayList.get(i) + " ");
}
System.out.println();
for (String temp :
arrayList) {
System.out.print(temp + " ");
}
System.out.println();
for (Iterator iter = arrayList.iterator(); iter.hasNext(); ) {
System.out.println("next is: " + iter.next());
}
//判断集合是否为空
if(arrayList.isEmpty())
System.out.println("集合为空");
else
System.out.println("集合非空");
//克隆集合 浅拷贝
ArrayList<String> al = (ArrayList<String>) arrayList.clone();
System.out.println(al);
//清空集合
arrayList.clear();
System.out.println(arrayList);
}
}
# 存储普通类型
package com.leerep.javabase.arraylist;
/*
* 基本类型与包装类对应关系
* byte --> Byte
* short --> Short
* int --> Integer
* long --> Long
* char --> Character
* float --> Float
* double --> Double
* boolean --> Boolean
* */
import java.util.ArrayList;
public class ArrayListSaveBasicType {
public static void main(String[] args) {
ArrayList<Integer> alI = new ArrayList<>();
alI.add(100); //自动装箱 基本类型 --> 引用类型
alI.add(200);
System.out.println(alI);
int a = alI.get(0); //自动拆箱 引用类型 --> 基本类型
System.out.println(a);
System.out.println("=============================");
ArrayList<Character> alC = new ArrayList<>();
alC.add('a');
alC.add('b');
alC.add('c');
System.out.println(alC);
System.out.println("=============================");
ArrayList<Double> alD = new ArrayList<>();
alD.add(3.14);
alD.add(3.1415);
System.out.println(alD);
}
}